Подтвердить что ты не робот

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")

        } 
}

любые предложения? или это просто ошибка?

4b9b3361

Ответ 1

Ваш метод не вызван вообще, потому что у вас неправильная подпись. Он был изменен в Xcode 8 beta 6:

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

Обратите внимание, что тип sender равен Any? вместо AnyObject?. У вас должна была быть ошибка после обновления Xcode, в котором говорилось, что ваш метод не отменяет какой-либо метод из своего суперкласса, который должен был вас подсчитать до того, как вы удалите override.