将发送方(sender):Any?与UIBarButton项进行比较

4

我是一个新手,刚好接触到了发布的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?一样进行类型转换?

原始的苹果指南

3个回答

10

prepareforsegue方法内尝试以下操作。

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

欢迎,伙计 :) - Nirav D
1
难道不应该是 if saveButton === barButton { 吗? - Cam Connor
@CamConnor 感谢您的建议。 - Nirav D

0
如果你需要进行类型转换,只需简单地使用 sender as! UIBarButtonItem 即可。

0
你还可以:
1)选择一个已经创建的segue,作为UIBarButtonItem和目标控制器之间的连接。
2)给它命名:

enter image description here

3) 测试它:

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接