比较发件人:有吗?到 UIBarButtonItem

compare sender: Any? to UIBarButtonItem

我是 swift 的新手,刚好发布了 Swift 3,但苹果文档仍然使用 Swift2 语法。

了解下面(Swift2)

@IBOutlet var weak saveButton:UIBarButtonItem!

此方法可让您在 ViewController 显示之前对其进行配置。

override func prepareForSegue(segue: UIStoryboardSegue, sender:AnyObject?) {
if saveButton === sender {   //originally swift 2 can compare

}

已更改为 (Swift3)

override func prepare(for segue: UIStoryboardSegue, sender:Any){
}

现在 swift 3 我无法检查 if sender = saveButton

我对 Swift 很陌生,我需要像 sender as UIBarButtonItem?

那样投射吗

Original Apple Guide

如果您需要施法,只需说 sender as! UIBarButtonItem 就这么简单。

prepareforsegue 方法中像这样尝试。

override func prepare(for segue: UIStoryboardSegue, sender:Any){
     if let barButton = sender as? UIBarButtonItem {
          if saveButton == barButton {
               //Do what you want
          }
     }
}

您还可以:

1) Select 您创建的 segue 作为 UIBarButtonItem 和目标控制器之间的连接。

2) 命名:

3) 测试一下:

func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) {

    if segue.identifier == "MyIdentifier" {
        // actions
    }
}