Как мне передать данные из модального ViewController в родительский ViewController?

#ios #uiviewcontroller #modalviewcontroller

#iOS #uiviewcontroller #modalviewcontroller

Вопрос:

Мое приложение — это приложение с вкладками ( навигация). В FirstViewController я вызываю onModalView.

 -(void) onFilter
{
  FilterViewController* controller =[[[FilterViewController alloc] initWithNibName:@"Filter" bundle:[NSBundle mainBundle]] autorelease];
  [self.navigationController presentModalViewController:controller animated:YES];
}
  

Существует множество фильтров, которые пользователь может выбрать в FilterViewController. Я хочу передать пользовательские настройки в FirstViewController. Как я могу это сделать?

Ответ №1:

Обычно я использую шаблон делегирования. Нравится:

 @class FilterViewController;

@protocol FilterViewControllerDelegate
@required
- (void)filterViewController:(FilterViewController *)controller didSelectFilters:(NSInteger)filters;
@end

@interface FilterViewController : UIViewController {
    id<FilterViewControllerDelegate> _delegate;
}
@property (nonatomic, assign) id<FilterViewControllerDelegate> delegate;
@end
  

и в вашем FirstViewController :

 -(void) onFilter
{
  FilterViewController* controller =[[[FilterViewController alloc] initWithNibName:@"Filter" bundle:[NSBundle mainBundle]] autorelease];
  controller.delegate = self;
  [self.navigationController presentModalViewController:controller animated:YES];
}

- (void)filterViewController:(FilterViewController *)controller didSelectFilters:(NSInteger)filters {
// Do something
}
  

В вашем FilterViewController вызове - (void)filterViewController:(FilterViewController *)controller didSelectFilters:(NSInteger)filters делегата перед его отклонением.