Ios Xcode8无法将多个/单个uibuttons连接到swift文件中的单个@iAction
我使用的是Xcode 8测试版。我无法从情节提要中拖动多个UIButton以连接到swift文件中的单个@iAction。缺陷感谢您的帮助。如果我的回答正确,您需要使用Ios Xcode8无法将多个/单个uibuttons连接到swift文件中的单个@iAction,ios,swift,uibutton,swift3,xcode8,Ios,Swift,Uibutton,Swift3,Xcode8,我使用的是Xcode 8测试版。我无法从情节提要中拖动多个UIButton以连接到swift文件中的单个@iAction。缺陷感谢您的帮助。如果我的回答正确,您需要使用UIgestureRecognitizer将多个内容附加到一个操作 你可以做的是在每个按钮上放置一个uigesturecognizer,然后像平常一样用一个按钮(ctrl-drag)设置其中一个,而不是从其他手势识别器中ctrl-drag到你做的第一个动作。我想这是另一个问题:如果你第一次尝试创建一个iAction,它可以正常工作
UIgestureRecognitizer
将多个内容附加到一个操作
你可以做的是在每个按钮上放置一个
uigesturecognizer
,然后像平常一样用一个按钮(ctrl-drag)设置其中一个,而不是从其他手势识别器中ctrl-drag到你做的第一个动作。我想这是另一个问题:如果你第一次尝试创建一个iAction,它可以正常工作。
但是,如果出于任何原因决定重新连接iAction(将相同的操作连接到另一个对象,或重命名函数),那么它将失败
实际上,您创建了一个名为doSomething
的iAction,它创建了一个函数func-doSomething(sender:ui按钮)
。
但对于XCode 8(或Swift 2.3/3.0),此方法被解释为func doSomethingWithSender(sender:ui按钮)
我想这是一个bug,苹果在“重命名Objc方法”这件事上做得有点太过火了。通过使用此解决方案,您可以添加现有操作,也可以将多个按钮连接到单个操作。 我认为Xcode8中有一个bug。通过将
发送方
更改为发送方
例:正常按钮
@IBAction func huu(sender: UIButton) {
}
您不能将多个按钮或单个按钮添加到此操作。您只需像这样进行更改,然后可以使用“从情节提要拖动并连接”来添加多个按钮
@IBAction func huu(_ sender: UIButton) {
}
连接IBXcode后,将显示如下警告:-
要删除此警告,只需从操作/功能中删除\u
符号。确保在连接IBO插座后删除。
希望这会对你有所帮助!:) 如果将发件人更改为AnyObject而不是Any或UIButton,则允许您将多个按钮连接到同一操作。当您连接按钮操作时,默认情况下,该方法如下所示:
@IBAction func s(_ sender: Any) {
}
只需将Any更改为UIButton,您就可以将更多按钮操作连接到此特定方法
因此,在更改后,应如下所示:
@IBAction func s(_ sender: UIButton) {
}
希望这能解决问题。:) 我已将发件人从任何
控件将按钮拖动到函数的名称。在Swift 3完整版本中,这将起作用 只需将任意按钮更改为UIButton,您就可以将更多按钮操作连接到此特定方法 因此,在更改后,应如下所示:
@IBAction func s(_ sender: UIButton) {
}
@iAction功能(uSender:ui按钮){
}
确定这将解决问题。:) 如果您将“Any”更改为“UIButton”,它将工作 我试了很多次,最后得到的结果是 正常动作
@IBAction func selectBtn(_ sender: Any) {
}
对于具有相同UIAction方法的多个按钮,请尝试下面的方法
@IBAction func selectBtn(_ sender: UIButton) {
}
这对我有用。我将返回类型从“Any”更改为“UIButton”下面的iAction只对一个按钮有效
@IBAction func singleButton(sender: Any) {
// Write your logic
}
下面的iAction将使用多个按钮
@IBAction func multipleButton(sender: UIButton) {
// To find a particular button from an array of buttons
if sender.tag == 1{
// Write your logic
}else if sender.tag == 2{
// Write your logic
}
}
谢谢你的及时回复。我相信这也行。但是,在以前版本的XCode中,只需按住ctrl键将多个按钮直接拖动到一个iAction。有了xcode 8 beta版,我再也做不到了。我最终只是通过连接检查器手动连接它。这是一个很好的答案,适用于Xcode 8的发行版。谢谢另一个想法是完全消除争论。@Chathuranga Silva-这对我很有效,谢谢。@丹尼尔:那也行,谢谢。它行。。。让我难过的是,现在我们要花这么多时间来使用一个稳定版本的Xcode…非常棒的解决方法,但苹果应该承认这个错误。我的操作默认为“sender”,但将“Any”改为“UIButton”对我有效。你找到了解决方法吗?不,这显然是Xcode中的一个问题。要么苹果修复了这个问题,要么你把你的代码转换成Swift 3。我切换到
AnyObject
,它就可以工作了。显然,这是Xcode 8.2.1中的一个bug。这一个也是为我做的!