问题标签 [target-action]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
59 浏览

swift - 我必须使用协议/委托来让 ViewController 执行在另一个类中创建的 UIButton 的操作吗?

我创建了一个 UIButton 作为 UIView 类的子视图。我想将该 UIView 作为子视图添加到 UIViewController 类。我想将 UIViewController 类中的目标操作添加到 UIButton。在下面的示例中,当您点击我的 UIButton 时,它应该打印“您好,按钮被按下了!”。然而,什么也没有发生。为什么是这样?我知道还有其他方法可以实现这一目标。为什么我的方式不起作用,使用其他技术实现这一目标的利弊是什么?

0 投票
1 回答
478 浏览

ios - UISlider 的 Value Changed 目标未被调用

我在 XIB 文件中有一个 UISlider,其 IBAction 插座连接到其相应的视图控制器。一切看起来都很好(见下图)。但是,当我在模拟器中实际移动滑块时 - 没有调用 Value Changed(图像中的sliderValueChanged)目标。我已经验证了 viewDidLoad 正在被调用,并且视图控制器已连接到 XIB。

帮助!

在此处输入图像描述

0 投票
1 回答
82 浏览

ios - 如何在按钮目标选择器中放置变量

我有一个添加目标的按钮,选择器包含一个变量。
我可以将变量添加到选择器中而不会收到错误吗?
先感谢您。

0 投票
0 回答
364 浏览

swift - Xcode 8 和 Swift 3 中的绑定:Target 永远不会被调用,并且参数以未初始化的形式传递

这是我想与您分享的 2 个绑定问题,与在IB中配置时的选择器名称和参数有关。

CoreData通过 an 检索对象ArrayController并填充在NSTableView. 所有的绑定都是通过Interface Builder完成的。每行包含一个按钮,该按钮应检查 url(实体的属性之一)。

1.为了使按钮触发,我首先尝试以这种方式绑定它:

对于目标:

  • 绑定到:文件的所有者(在本例中为 a ViewController
  • 模型密钥路径:self
  • 选择器名称:revealInFinder:

对于论点:

  • 绑定到:Table Cell View
  • 模型键路径:ObjectValue
  • 选择器名称:revealInFinder: (<automatically set>)

当我单击按钮时,revealInFinder(object: NSManagedObject)我在 中编写的函数ViewController根本不会被调用:我尝试了带或不带参数,带或不带冒号,没有任何反应:没有触发断点,控制台中没有消息。我可以在选择器名称中放入随机字符,我什至没有得到

“无法识别的选择器名称”!

...如果我在 中更改函数的名称ViewController,或者只是将其删除,同样的事情:没有任何反应,控制台中也没有错误(当然,我已经检查过:文件的所有者设置为ViewController,但是无论如何都不会显示视图)。

由于绑定是在 IB 中而不是在代码中进行的,因此很难跟踪和调试我的错误(我还将 -NSBindingDebugLogLevel 1 放在“启动时要传递的参数”中,如此处推荐:https://developer.apple。 com/library/mac/documentation/Cocoa/Conceptual/CocoaBindings/Concepts/Troubleshooting.html)。但是我应该如何处理显然是“非事件”的事情?当然我在这里遗漏了一些东西,但是什么?

2-我决定以不同的方式绑定按钮:

对于目标:(起初没有参数)

  • 绑定到:表格单元格视图
  • 模型键路径:ObjectValue(所以是 Core Data 的实体,对吗?)
  • 选择器名称:revealInFinder:

这很有效,因为我NSManagedbject为我的实体创建了子类,并为它们编写了扩展。当我添加一个参数时会出现问题,因为我需要让 managedObjectContext 在函数内部进行一些获取:

对于论点:

  • 绑定到:文件的所有者
  • Model Key Path:self.managedContext(moc在viewController中设置)

在一堆“发送了无法识别的选择器”消息之后,我设法编写了这个函数(不太清楚为什么它只用“_”调用):

但传递的参数仍然存在0x00000000... (<uninitialized> in the console)我通过删除自我更改了模型密钥路径。,然后将其绑定到managedObjectContextArrayController代替):

  • 绑定到:阵列控制器
  • 控制器键:ArrangedObjects
  • 模型键路径:managedObjectContext

moc 仍然未初始化。

  • 为什么我的第一次尝试没有触发任何动作?

  • 为什么该参数在第二次尝试中未初始化(甚至不是"nil")?

0 投票
2 回答
124 浏览

ios - performSegue 被调用但实际上并没有转到 VC2?(斯威夫特 3.0)

谁能发现我的错误?左栏按钮可以关闭,但是操作按钮会调用performSegue但 UI 不会更改 VC?调用showLinkPreviewController内部ViewDidLoad工作,所以显然这是目标/动作的问题?一个错误?

0 投票
3 回答
1232 浏览

ios - 如何在 iOS 中找到目标的动作函数

我希望我能说清楚。我有按钮,我想知道什么对象中的什么函数是它的 .touchDown 事件的目标。iOS 中有一些属性和功能可能是我正在寻找的,但我无法让它们工作。属性为:self.allTargets 函数为:self.actions(forTarget:, forControlEvent:)

我已经用这段代码打印了这些值:

结果:

我可以看到按钮有一个目标,但我无法获得该功能。帮助!

0 投票
3 回答
377 浏览

ios - 为什么 UIButton 使用目标动作设计模式而不是委托模式,而 UITextField 的反之亦然

任何人都可以帮助理解为什么 Apple 决定使用 Target Action 设计模式来处理 UIButton 而不是委托模式的事件?

或者,我可以说为什么 Apple 为 UITextField 选择委托设计模式,即使同样的事情也可以通过 Target Action 来实现。

0 投票
1 回答
341 浏览

ios - 防止父 UIControl 响应 touchDown 事件

我正在创建一个MetaControl由几个子控件组成的可重用(见图)。它继承自UIControl,并包含我创建的 2 个简单UIButtons的自定义滑块。CustomSlider也继承自UIControl.

在此处输入图像描述

MetaControl的初始化程序中,我添加了一些从子控件接收事件以通知MetaControl更改的目标操作。

然后我把选择器:

我遇到的问题是sliderTouched()事件。每当我触摸滑块时,此事件都会触发两次。

  • 第一次它似乎是从MetaControl自身发送的。
  • 第二次是从CustomSlider自身传递的正确事件。

我的问题是,我怎样才能防止它MetaControl本身响应事件,同时仍然允许我CustomSlider发送它的动作?

我使用了 2 种方法来确认是它MetaControl本身触发了额外的事件:

  • 注释掉了中的动作发送代码CustomSlider。即使没有这行代码,sliderTouched()仍然调用:

    /li>
  • .touchDown将动作替换为.applicationReserved。由于我不再使用.touchDown,因此永远不会调用MetaControl'事件。.touchDown

    /li>

有趣的是,不会UIButtons导致同样的问题。按下不会触发两个事件。我怎样才能实现同样的目标?UIButton

PS我导致从 发送事件的方式CustomSlider是通过UIPanGestureRecognizer嵌入到CustomSlider自己的初始化程序中的自定义。

我以此为指导:https ://www.raywenderlich.com/82058/custom-control-tutorial-ios-swift-reusable-knob

PPS 我希望我不会走错路——将所有这些子控件嵌入到一个MetaControl它本身继承自UIControl. 它MetaControl本身从不响应触摸事件——只有子控件。我MetaControl主要使用容器来管理共享状态,为布局提供结构,并使控件可重用。最终,我需要他们中的许多人。

在此处输入图像描述

0 投票
1 回答
3917 浏览

ios - Member reference base type 'Class' is not a structure or union - has the Fixit led me in the right direction?

I’m trying to make a delegate that will send messages from UIButtons within a custom UIView called SGView and am a bit out of my depth following the error messages. I recently learned how to get a delegate to send messages successfully from within an instance method.

SGView includes a class method that arranges multiple UIButtonsin a circle and was designed to be used by different UIViews. The geometry works when the method is called from a parent UIView. I have now declared the delegate by adding @protocol and @property to the class method declaration

like so ...

SGView.h

SGView.m is essentially like this

The moment I change the target from self to self.delegate in the target action statement above, Xcode reports three errors

Definition of 'objc_class' must be imported from module 'ObjectiveC.runtime' before it is required

No member named 'delegate' in 'struct objc_class'

Member reference type 'struct objc_class *' is a pointer; did you mean to use '->'?

Xcode offers a Fixit for the last of these

By accepting the Fixit I removed the three issues and introduced another

Member reference base type 'Class' is not a structure or union

If this Fixit has lead me in the right direction, what exactly should I be doing next ?

I need to ask this question to make sense of what might seem a straight forward problem before diving back into the Apple documentation and these tutorials trying to solve it. Any help is most appreciated. Thanks.

SOLUTION

This can be found in my answer to my own question.

0 投票
1 回答
37 浏览

ios - CoreMotion [ViewController updateReferenceAttitude:] - 为什么选择器无法识别?

我是新手CoreMotion。我的第一个程序显示deviceManager了俯仰、滚动和偏航的变化值,但在尝试设置时崩溃referenceAttitude

在调试中,我的方法中的语句

崩溃与以下

为了测试它,我使用 Xcode 8.3.3 和运行 iOS 10.3.3 的 iPhone 5 C。

谁能解释为什么这selector不被认可?