2014-09-24 3 views
8

У меня есть несколько просмотров, встроенных в контроллер навигации.Не могу называть segue кодом (Swift)

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

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

Это, как я называю SEGUE на ViewController1

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

это от ViewController1 к ViewController2

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

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

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

Я попытался очистки продукта, а также переустановку тренажер.

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

storyboard

ширмой инспектора тождественного viewcontroller1 (это на самом деле называется ViewController в моем проекте)

Identity Inspector

Снимок экрана segue (name3) segue

The opt ионы Segue: enter image description here

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

Любая помощь?

ответ

0

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

0

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

+0

Я не ищу segue в ViewController2, я вызываю это в ViewController1, где кнопка связана с segue в ViewController2 –

+0

Возможно, сообщение об ошибке неверно: «Receiver (** ViewController2 **) не имеет никакого выхода с идентификатором «name2». Независимо от того, если segue принадлежит кнопке, он все еще не «сам» до контроллера вида. –

+0

Контроллер View также имеет segue, называемый name3, и те же ошибки появляются, когда я пытаюсь назвать это segue. –

2

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

Затем вы можете использовать

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

в классе ViewController1.

+0

У меня есть другой segue с именем name3, который именно это. Дает ту же ошибку. –

+0

Можете ли вы сделать скриншот своей раскадровки? – derdida

+0

Я добавил скриншот –

0

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

+0

К сожалению, это не работает. –

+0

И делать то же самое с вашим именем контроллера? – Aymenworks

+0

Все еще не работало –

2

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

enter image description here

UIStoryBoardSegue было то, что мое необходимое.

+1

Я уже ответил на вопрос. Пожалуйста, см. Мой ответ –

+1

Неважно, если вы уже ответили на этот вопрос, я предоставил альтернативное решение для людей, которые не нашли ваш ответ полезным. Спасибо за прощальное голосование :) –

+1

Ваш ответ не отвечает на мой вопрос, следовательно, голосует. Я понимаю, что ты любишь быть ребенком и голосом меня обратно :) –