模态 ViewController 委托回调 - 如何?
Posted
技术标签:
【中文标题】模态 ViewController 委托回调 - 如何?【英文标题】:modalViewController delegate callbacks - HowTo? 【发布时间】:2011-07-17 21:04:24 【问题描述】:我有一些视图控制器,当我单击某个按钮时,我会创建 modalView(用 UINavigationController 包装)并呈现它。
DscViewController *enterDescription = [[[DscViewController alloc] init] autorelease];
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:enterDescription];
[self presentModalViewController:navController animated:YES];
[navController release];
问题是,如何使我的(父)视图控制器成为委托,以及当我单击 modalViewController 上的某个按钮(例如完成)以调用我的父视图控制器中的某个方法来关闭模式并从模态输入?
【问题讨论】:
【参考方案1】:我认为让一个控制器责备它的父控制器来完成它应该处理的工作并不是一个好习惯。您可以随时使用self.parentViewController
来关闭您当前所在的模式。
如果由于某种原因您只处理 parentViewController 中的存储,那么您可以将 done
按钮操作指向当前 viewController 中的方法,然后使用 self.parentViewController
触发父方法进行存储。
或者直接将你的按钮代理设置为self.parentViewController
[button addTarget:self.parentViewController action:@selector(someMethodInParentViewController) forControlEvents:UIControlEventTouchUpInside];
【讨论】:
我得到了“无法识别的选择器发送到实例...”这个显示示例的错误。当然,在我的父视图控制器中,我有方法 -(void)someMethodInPrentView 这是因为,我的 modalViewController 被 NavigationController 包裹了 您始终可以通过引用 UINavigationViewController 中包含的模态视图控制器来传递根视图控制器。你也可以使用 NSNotifications,而不使用委托。 你能给我一些简单的例子吗? 看我的回答 here 使用 NSNotifications以上是关于模态 ViewController 委托回调 - 如何?的主要内容,如果未能解决你的问题,请参考以下文章
1 个 ViewController 和 2 个 modalViews 委托