2012-01-02 3 views
16

У меня есть два контроллера в раскадровке, встроенные в NavigationController, и есть переход для переключения между ними.Передайте данные предыдущему контроллеру

Передача данных от первого контроллера ко второму является довольно простой, реализуя prepareForSegue и задавая свойства второго контроллера с помощью segue.destinationViewController.

Я должен передать данные на второй контроллер и на предыдущий. Я googled, но я не нашел простой, но рабочий код, чтобы продемонстрировать это.

Вы бы так любезно дали мне простой пример наилучшего способа сделать это?

Заранее благодарен!

ответ

24

В вашем классе контроллера второго класса вы создаете протокол и делегируете. Первый контроллер представления установит его как делегата в prepareForSegue и реализует методы протокола. Второй контроллер представления затем вызовет методы для передачи данных обратно на первый контроллер представления. Вот пример кода из одного из моих проектов.

@protocol TableSelectorDelegate <NSObject> 

@optional 
- (void)didMakeSelection:(id)selectionString forType:(NSString *)dataTitle; 
- (void)didAddNewValue:(NSString *)newValue forType:(NSString *)dataTitle; 

@end 

@interface TableSelectorViewController : UITableViewController 

@property (nonatomic, weak) id<TableSelectorDelegate> delegate; 

@end 
+0

Для iOS6 есть размотка segue – huggie

2

«Рекомендуемый» способ сделать это - использовать делегат. Пусть первый контроллер представления настроен как делегат нового контроллера представления во время вызова -prepareForSegue:, а затем, когда вы закончите, вы вызываете все методы делегата, которые вы определили.

Это немного больше, чем плотное соединение двух контроллеров, но это фактически экономит время, если вы когда-либо находите, что вам нужно использовать контроллер несколько иначе. Если вы смотрите видео WWDC'11 при использовании IB и раскадровки, они действительно проходят этот шаблон в глубину и включают примеры кода и демонстрации, поэтому я рекомендую взглянуть на это.

3

Когда вы устанавливаете данные, которые вы передаете второму контроллеру, вы также можете установить указатель на предыдущий.

0

Я изучаю все варианты на этот вопрос о том, как передать данные из одного контроллера представления к другому, и пришел, чтобы увидеть, что Второй IOS App Учебник Apple, имеет не только код, но прекрасное объяснение от всего, что связано.

+0

Где я могу найти? – Jeroen

+0

https://developer.apple.com/library/ios/#documentation/iPhone/Conceptual/SecondiOSAppTutorial/Introduction/Introduction.html#//apple_ref/doc/uid/TP40011318 –

+0

Вы также должны ознакомиться с делегатами, как описано в принятом ответе. –

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