Понимание executeSegueWithIdentifier - PullRequest
50 голосов
/ 07 февраля 2012

Может ли кто-нибудь более знающий, чем я, объяснить performSegueWithIdentifier:sender: для меня? Мне нужно переключить представления (и классы), а также перенести несколько строк NSS и идентификаторов в класс этого представления. Мне было интересно, если это возможно с performSegueWithIdentifier:sender:

Спасибо!

Ответы [ 4 ]

77 голосов
/ 07 февраля 2012

Во-первых, вы должны настроить переход в раскадровке и дать ему соответствующий идентификатор . (Нажмите на переход (левая панель), а затем нажмите на атрибуты (правая панель).

Затем вы можете связать это с кнопками или выбором строк таблицы из вашей раскадровки, или вы можете вызвать это в коде, используя performSegueWithIdentifier:sender:.

После этого вашему контроллеру представления будет отправлено сообщение prepareForSegue:sender:. Вы переопределяете этот метод в своем подклассе контроллера представления и можете настроить целевой контроллер представления следующим образом:

TargetViewController *targetVC = (TargetViewController*)segue.destinationViewController;
targetVC.string1 = string1;

И так далее. sender в этом методе будет объектом, который вы используете в качестве sender в исходном вызове метода.

9 голосов
/ 07 февраля 2012

Большинство сегментов инициируются автоматически в результате некоторого взаимодействия с пользователем. Например, если у вас есть переход, который подключен от кнопки к сцене в раскадровке, то при нажатии кнопки переход автоматически инициируется.

Время от времени имеет смысл программно инициировать переход - например, у вас есть сценарий рекордов, который отображается, когда пользователь выигрывает раунд игры. Невозможно выразить концепцию победы в самой раскадровке, поэтому вместо этого вы можете создать переход, назначить ему идентификатор и вызвать -performSegueWithIdentifier:sender: во время выполнения.

Другой связанный с segue метод на UIViewController, -prepareForSegue:sender:, - это метод, который вы должны переопределить для выполнения любой настройки на целевом контроллере представления.

3 голосов
/ 07 февраля 2012

В prepareForSegue:sender: вы получаете возможность настроить destinationViewController: именно там вы передадите ему необходимые данные.Это обсуждается в Компетенциях приложений какао для iOS .

0 голосов
/ 11 ноября 2014

Сегодня я столкнулся с проблемой executeSegueWithIdentifier: не выполняется из-за того, что не установил очередь делегатов в моем сеансе URL.

Так что, случайно, проверьте, действительно ли вы устанавливаете очередь делегатов при создании URLSession, иначе URLSession создаст свою собственную.

urlSession = [NSURLSession sessionWithConfiguration:sessionConfigObject
                                           delegate:self
                                      delegateQueue:[NSOperationQueue mainQueue]];

Я упоминаю об этом здесь, потому что я довольно часто вижу, что обработка URLSession заканчивается вызовом какого-либо действия, связанного с пользовательским интерфейсом. И executeSegue должен быть выполнен на main, иначе он ничего не будет делать.

...