Понимание функции executeSegueWithIdentifier

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

Спасибо!

Ответ 1

Сначала вы должны настроить segue в своем раскадровке и присвоить ему соответствующий идентификатор. (Нажмите на сегмент (левая панель), затем нажмите "Атрибуты" (правая панель).

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

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

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

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

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