Swift 3的prepare(for segue:)函数坏了



由于某些奇怪的原因,在swift 3中,prepare(for segue:方法拒绝确认segue标识符。我有以下IBAction连接到UI上的几个按钮:

@IBAction func goToImagesPicker(_ sender: AnyObject) {
    performSegue(withIdentifier: "showImagePicker", sender: sender)
}
@IBAction func goToNamePicker(_ sender: AnyObject) {
    performSegue(withIdentifier: "showNamePicker", sender: sender)
}

然而在我的prepare(for segue:方法中,它不能识别不同的segue标识符,我知道因为我的控制台没有记录我分配给每个segue的消息

func prepare(for segue: UIStoryboardSegue, sender: AnyObject?) {
        if segue.identifier == "showImagePicker" {
            print("This is the Image Picker")
        }
        if segue.identifier == "showNamePicker"  {
            print("This is the Name Picker")
        } 
}

有什么建议吗?或者这只是一个bug?

你的方法根本没有被调用,因为你有错误的签名。在Xcode 8 beta 6中更改为:

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

注意sender的类型是Any?而不是AnyObject?。在升级Xcode后,你应该有一个错误,告诉你你的方法没有覆盖它的超类中的任何方法,这应该在你删除override之前提示你。

最新更新