Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xcode8无法将多个/单个uibuttons连接到swift文件中的单个@iAction_Ios_Swift_Uibutton_Swift3_Xcode8 - Fatal编程技术网

Ios Xcode8无法将多个/单个uibuttons连接到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,它可以正常工作

我使用的是Xcode 8测试版。我无法从情节提要中拖动多个UIButton以连接到swift文件中的单个@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。这一个也是为我做的!