由于某些奇怪的原因,在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
之前提示你。