何らかの奇妙な理由で、Swift 3、prepare(for 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:
メソッド、異なるセグエ識別子を認識しません。私が知っているのは、コンソールがそれぞれに割り当てたメッセージを記録しないからです:
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")
}
}
助言がありますか?またはこれは単なるバグですか?
署名が間違っているため、メソッドがまったく呼び出されません。 Xcode 8ベータ6では次のように変更されました。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
sender
のタイプはAny?
の代わりに AnyObject?
。 Xcodeをアップグレードした後、override
を削除する前にメソッドがスーパークラスのメソッドをオーバーライドしていないことを示すエラーが発生するはずです。