Swift 3 подготовить (для segue:) функция сломана?
по какой-то нечетной причине, с быстрым 3, метод prepare(for segue:
отказывается признать идентификатор segue. У меня есть следующий IBAction, подключенный к кнопке пары в пользовательском интерфейсе:
@IBAction func goToImagesPicker(_ sender: AnyObject) {
performSegue(withIdentifier: "showImagePicker", sender: sender)
}
@IBAction func goToNamePicker(_ sender: AnyObject) {
performSegue(withIdentifier: "showNamePicker", sender: sender)
}
Однако в моем методе prepare(for 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")
}
}
любые предложения? или это просто ошибка?
Ответы
Ответ 1
Ваш метод не вызван вообще, потому что у вас неправильная подпись. Он был изменен в Xcode 8 beta 6:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
Обратите внимание, что тип sender
равен Any?
вместо AnyObject?
. У вас должна была быть ошибка после обновления Xcode, в котором говорилось, что ваш метод не отменяет какой-либо метод из своего суперкласса, который должен был вас подсчитать до того, как вы удалите override
.