为 UIButton 调用发送者的方法

method to call on sender for UIButton

所以我的页面上有一堆按钮,并将它们分类到类型为 [UIButton] 的数组中并称为 buttonsArray。

当您单击其中一个按钮时,我会将它们的操作绑定到 goToFacts 函数,该函数与我的 segue "goToFactSegue" 一起使用,并将 WHICH 按钮(发件人)的信息传递给我的 prepare for segue 函数。我的 prepareforSegue 函数确认 segue 标识符是正确的,然后将变量索引设置为 DetailViewController 页面上的正确数字。我计算将索引设置为(称为 whichIndex)的正确数字的方法是匹配 buttonsArray 中的索引(被单击的按钮)。我的问题是找到被点击的按钮(发件人)的 title/name 并将其设置为 theButtonsName 这样我就可以在我的 buttonsArray 中搜索它并找到它的索引。

TL;DR 如何提取 UIButton 的名称,就像在 UIImageView 上使用 .view 一样

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "goToFactSegue" {
        // send info to next page
        if let whereToGo = segue.destinationViewController as? DetailViewController {
            let theButtonsName = sender!.******** as! UIButton
            if let whichIndex = find(buttonsArray, theButtonsName) {
            whereToGo.index = whichIndex 
            }}
    }
}

@IBAction func goToFacts(sender: UIButton) {
    performSegueWithIdentifier("goToFactSegue", sender: sender)
}

我搜索了 xcode 建议的所有可能性,没有任何东西与 UIButton 交互,阅读文档,他们谈论的只是 .titleLabel,这是实际文本(不,.titleLabel 不不工作) 还尝试了通常的嫌疑人(命名的变体...等)

我建议您通过对您的应用程序所做的非常简短的说明来标记您的按钮。您可以使用情节提要来完成此操作,用 1、2、3、...、n 等值标记每个按钮,然后您将获得您似乎正在寻找的索引。 UIButton 有一个 属性 标签:

println("Tag of button: \(button.tag)")

发件人也是如此。

@IBAction func goToFacts(sender: UIButton) {
      performSegueWithIdentifier("goToFactSegue", sender: sender)
      whichIndex = sender.tag
}
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "goToFactSegue" {

       if let whereToGo = segue.destinationViewController as? DetailViewController {

         let button = sender as! UIButton
         let theButtonsName = button.titlelabel?.text


          if let whichIndex = find(buttonsArray, theButtonsName) {
             whereToGo.index = whichIndex 
          }
       }
    }
}