#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
делегата перед его отклонением.