2012-10-12 2 views
4

У меня есть около 6 segues, которые выполняют одно и то же действие в методе prepareForSegue, однако я хочу пропустить это действие для моего разматывания segue, но я не могу понять, как определить, прошел ли переход segue, ,Определите, может ли segue разматывать segue?

Любая помощь будет оценена по достоинству.

+1

Поскольку вы сами настраиваете segues, почему бы не использовать тест 'if' в' prepareForSegue', чтобы пропустить дополнительный вызов метода? –

+0

Единственный способ, которым я знаю это сделать, - это написать инструкцию «if», которая проверяет все идентификаторы 6 segue, на которых я хочу выполнить мой код. Я бы предпочел просто использовать «если не разобрать segue then blah». Насколько я знаю, вы не можете установить идентификатор для развязки и нет другого способа определить это? –

+2

Как насчет установки идентификатора развязки в IB, а затем проверки 'if (NO == [[идентификатор segue] isEqualToString: @" Unwind "])' in 'prepareForSegue:' поэтому код запускается только для non -непрерывно. –

ответ

16

Ах, неважно, Роботизированная кошка имела ответ, который в основном дает развязку идентификатора. Я не мог понять, как это сделать, пока не понял, что вы можете выбрать segues из панели вывода слева от раскадровки и установить идентификатор оттуда.

Спасибо!

+0

Побей меня. Рад, что вы нашли это поле в Инспекторе атрибутов. –

+0

Да, я забыл, как я это сделал до того, как увидел этот ответ :-) – marsant

2

prepareForSegue вызывается только в прямом направлении. Он не называется, когда вы расслабляетесь. Чтобы обрабатывать разматываемые сегменты, вам необходимо подключить кнопку выхода к методу IBAction, который принимает параметр segue в качестве параметра. Этот метод будет вызываться, когда вы расслабляетесь.

У этого post есть больше информации о том, как их использовать.

+0

Я только что протестировал это, и Бекка прав. Unwind segues skip prepareForSegue, поэтому в моем описании выше, это не проблема. Thx –

+2

Это справедливо только для 'segue.destinationViewController'. Из документов: _ «Как в разматывании, так и в стандартном сегменте исходная сцена может реализовать prepareForSegue для отправки информации в пункт назначения». _ – Andreas

+0

Подтверждено, что вы можете проверить для unindSegue.identifier для быстрого разговора в файле readyForSegue. –

0

Im довольно новый для SWIFT. Но я считаю, что здесь есть некоторые недоразумения. Если вы добавите разматывание самостоятельно, запускается prepareForSegue. Но при нажатии кнопки «назад», которая автоматически отображается в навигационной панели, начинка подготовки не нажимается.

Смежные вопросы