Не могу вызвать segue в коде (Swift)
у меня есть несколько представлений, встроенных в навигационный контроллер.
Я создал несколько сегментов (некоторые из кнопок на другие контроллеры вида, некоторые из одного контроллера вида на другой.
например, у меня есть segue (Show) от одной кнопки до контроллера вида name2, когда я нажимаю кнопку, он отлично работает, но когда я пытаюсь вызвать его программно, приложение падает и выдает ошибку.
вот как я называю segue on ViewController1
self.performSegueWithIdentifier("name2", sender: self)
это ViewController1 to ViewController2
у меня также есть сегмент, который подключен не к кнопке, а от vc1 до vc2, дает ту же ошибку.
Это странная ошибка, я получаю:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (ViewController2) has no segue with identifier 'name2''
Я попытался очистить продукт, а также переустановить симулятор.
скриншот моей раскадровки
экран инспектора идентификации viewcontroller1 (он фактически называется ViewController в моем проекте)
снимок экрана segue (name3)
параметры segue :
Edit:
Я обнаружил, что когда я подключаю кнопку как IBAction, а затем вызываю performSegueWithIdentifier("LogIn", sender: self)
от кнопки он работает правильно.
помочь?
5 ответов
Не подключайте кнопку в Редакторе раскадровки к другому сегменту (если вы хотите вызвать функцию performWithSegue в своем ViewController1) - просто подключите первый ViewController ко второму.
затем вы можете использовать
self.performSegueWithIdentifier("name2", sender: self)
в вашем классе ViewController1.
когда вы устанавливаете Segue от одного контроллера вида к другому, убедитесь, что вы правильно установили класс-см. изображение:
UIStoryBoardSegue что шахты нужны.
ошибка говорит о том, что вы ищете segue в ViewController2
но в вашем вопросе говорится, что segue происходит от кнопки. Это объясняет, почему его нельзя найти.
Попробуйте удалить идентификатор segue (имя ), build ( cmd + b), затем установите идентификатор segue и скомпилируйте. ( в раскадровке конечно )
хорошо, ответ в том, что я довольно тупой,
Всякий раз, когда я создавал новые ViewControllers, я подклассы ViewController
который был моим первым ViewController, а не UIViewController
что сделало его запустить recursivly.