Xcode8无法在swift文件中将多个/单个的uibuttons连接到单个@IBAction
我正在使用Xcode 8testing版。 我不能从故事板拖动多个UIButton来连接到swift文件中的一个@IBAction。 错误? 谢谢你的帮助。
通过使用此解决方法,您可以添加现有的操作,也可以将多个button连接到单个操作。
我认为在Xcode8中有一个错误。 通过将sender
更改为_ sender
可以将多个/单个button添加到单个操作/function中
例如: – 正常button
@IBAction func huu(sender: UIButton) { }
您不能将多个button或单个button添加到此操作中,您只需要像这样更改,然后通过使用拖放和连接故事板来添加多个button。
@IBAction func huu(_ sender: UIButton) { }
连接IBOutlets后,Xcode将显示如下警告:
要删除此警告,请简单地从操作/function删除_
符号。 确保在连接IBOutlet后删除_
希望这会帮助你! 🙂
如果将发件人更改为AnyObject而不是Any或UIButton ,则可以将多个button连接到相同的操作。
当你连接一个button动作时,默认情况下这个方法看起来像这样:
@IBAction func s(_ sender: Any) { }
只要将任何更改为UIButton ,您可以连接更多button操作到这个特定的方法。
所以改变后应该看起来像这样:
@IBAction func s(_ sender: UIButton) { }
希望这将解决这个问题。 🙂
如果你改变“任何”到“UIButton”它将工作。
如果我是正确的,则需要使用UIGestureRecognizer
将多个事件附加到一个操作。
你可以做的是在每个button上放置一个UIGestureRecognizer
,然后像button(ctrl-drag)那样将其中的一个button设置为一个button(ctrl-drag),然后按住Ctrl从其他手势识别器拖动到您所做的第一个动作。
我想这是另一个问题:如果你尝试创build一个IBAction第一次,它工作正常。 但是,如果由于任何原因您决定重新连接IBAction(同一个动作到另一个对象,或重命名该function),那么它会失败。
事实上,你创build了一个名为doSomething
的IBAction,它创build了一个函数func doSomething(sender: UIButton)
。 但是用XCode 8(或Swift 2.3 / 3.0),这个方法被解释为func doSomethingWithSender(sender: UIButton)
。
我想这是一个错误,苹果在“重命名Objc-methods”方面做了太多的努力。
我已经从任何发件人更改为UIButton
控制拖动button到function的名称。
在斯威夫特3完整版本,这将工作。
只要将任何更改为UIButton,您可以连接更多button操作到这个特定的方法。
所以改变后应该看起来像这样:
@IBAction函数(_发件人:UIButton){}当然,这将解决这个问题。 🙂
我多次尝试,最后得到的结果是,
正常UIAction
@IBAction func selectBtn(_ sender: Any) { }
对于具有相同UIAction方法的多个button,请尝试以下方法,
@IBAction func selectBtn(_ sender: UIButton) { }
这对我有效。 我将返回types从“Any”更改为“UIButton”