如何将模态视图控制器中的数据传输到父视图控制器?

时间:2011-10-24 11:23:40

标签: 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 个答案:

答案 0 :(得分:2)

我通常使用委托模式。像:

@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之前解雇。