Передача данных обратно на предыдущий контроллер - программирование
Подтвердить что ты не робот

Передача данных обратно на предыдущий контроллер

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

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

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

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

Спасибо заранее!

4b9b3361

Ответ 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 есть не только код, но и прекрасное объяснение всего, что связано с ним.