Передача данных обратно на предыдущий контроллер
У меня есть два контроллера в раскадровке, встроенные в NavigationController, и есть переход для переключения между ними.
Передача данных от первого контроллера ко второму является довольно простой, реализуя prepareForSegue и устанавливая свойства второго контроллера с помощью segue.destinationViewController.
Я должен передать данные на второй контроллер и на предыдущий. Я googled, но я не нашел простой, но рабочий код, чтобы продемонстрировать это.
Вы бы так любезно дали мне простой пример наилучшего способа сделать это?
Спасибо заранее!
Ответы
Ответ 1
В вашем втором классе контроллера контроллера вы создаете протокол и делегируете его. Первый контроллер представления установит его как делегата в 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
Ответ 2
когда вы устанавливаете данные, которые вы передаете второму контроллеру, вы также можете установить указатель на предыдущий.
Ответ 3
"Рекомендуемый" способ сделать это - использовать делегат. Пусть первый контроллер представления настроен как делегат нового контроллера представления во время вызова -prepareForSegue:
, а затем, когда вы закончите, вы вызываете все методы делегата, которые вы определили.
Это немного больше, чем плотное соединение двух контроллеров, но на самом деле экономит время, если вам когда-либо понадобится использовать контроллер несколько иначе. Если вы смотрите видео WWDC'11 при использовании IB и раскадровки, они действительно проходят этот шаблон в глубину и включают примеры кода и демонстрации, поэтому я рекомендую взглянуть на это.
Ответ 4
Я изучил все варианты этого вопроса о том, как передавать данные с одного контроллера представления на другой, и пришел к выводу, что в Apple Second IOS App Tutorial есть не только код, но и прекрасное объяснение всего, что связано с ним.