Не могу вызвать сегмент в коде (Swift)


У меня есть несколько видов, встроенных в навигационный контроллер.

Я создал несколько сегментов (некоторые из кнопок к другим контроллерам вида,некоторые из одного контроллера вида к другому.

Например, у меня есть сегмент (Show) от одной кнопки до контроллера вида name2, когда я нажимаю кнопку, она отлично работает, но когда я пытаюсь вызвать ее программно, приложение вылетает и выдает ошибку.

Вот как я называю переход на ViewController1

self.performSegueWithIdentifier("name2", sender: self)

Это от ViewController1 до ViewController2

У меня также есть сегмент, который подключен не к кнопке, а от vc1 до vc2, дает ту же ошибку.

Это странная ошибка, которую я получаю:

 *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Receiver (ViewController2) has no segue with identifier 'name2''

Я попробовал очистить продукт, а также перезагрузить симулятор.

Снимок экрана моей раскадровки

раскадровка

Экран инспектора идентификации viewcontroller1 (он фактически называется ViewController в моем проекте)

Инспектор По Удостоверениям Личности

Снимок экрана segue (name3) переходить

Варианты перехода : Введите описание изображения здесь

Редактировать: Я обнаружил, что когда я подключаю кнопку в качестве IBAction, а затем вызываю performSegueWithIdentifier("LogIn", sender: self) из кнопки, она работает правильно.

Какая-нибудь помощь?

5 8

5 ответов:

Не подключайте вашу кнопку в Редакторе раскадровки к другому сегменту (когда вы хотите вызвать функцию performWithSegue в вашем ViewController1) - просто подключите первый ViewController ко второму.

Тогда вы можете использовать

self.performSegueWithIdentifier("name2", sender: self)

В классе ViewController1.

Когда вы устанавливаете сегмент от одного контроллера вида к другому, убедитесь, что вы правильно установили класс-см. изображение:

Введите описание изображения здесь

UIStoryBoardSegue было то, что нужно моему.

Ошибка говорит, что вы ищете сегмент в ViewController2, но ваш вопрос утверждает, что сегмент исходит от кнопки. Это объясняет, почему его нельзя найти.

Попробуйте удалить идентификатор сегмента (name ), построить ( cmd + b), затем установить идентификатор сегмента и скомпилировать. ( в раскадровке, конечно)

Ладно, ответ в том, что я довольно тупой,
Всякий раз, когда я создавал новые ViewControllers, я создавал подкласс ViewController, который был моим первым ViewController, вместо UIViewController, который заставлял его работать рекурсивно.