视图控制器调用模态视图

Posted

技术标签:

【中文标题】视图控制器调用模态视图【英文标题】:View controller calling a modal view 【发布时间】:2010-08-10 19:35:57 【问题描述】:

如何可靠地确定从模态视图中调用模态视图的视图控制器的名称?该应用程序有一个单例,所以我打算在那里添加一个视图控制器并保存调用视图控制器的名称。 .parentController 给了我导航控制器的名称。

编辑 我尝试了一个示例项目,它和我的一样,所以我认为可能不在同一页面上。我很感激你和我一起做这个。我从

下载了一个项目
http://sites.google.com/site/iphonesdktutorials/sourcecode/UINavigationControllerWithToolbar.zip?attredirects=0

添加了 2 行并更改了 1,它展示了我所得到的。如果那样的话,我花了5分钟。在 RootViewController.m 中,info_clicked(第 147 行),在最后一行上方添加,

NSLog(@"calling: %@", [[self navigationController] visibleViewController]); 

然后,按照您的指示,在最后一行将 self.navigationController 更改为 self。这个控制器是我想从模态中得到的。然后在 InfoViewController.m 中,viewDidLoad(第 35 行),在右花括号之前添加,

NSLog(@"Parent: %@", [self parentViewController]); 

将 Base SDK 项目设置更改为 4.0,构建,打开控制台并按下底部的信息按钮。我正在为 parentViewController 获取 UINavigationController,我想要 RootViewController。

【问题讨论】:

parentViewController 应该可以工作,你确定不行吗? 请看我下面的评论。谢谢。 【参考方案1】:

您可能使用的是[self.navigationController presentModal...] 而不是[self presentModal...]。如果您使用selfparentViewController 将起作用。

【讨论】:

基于导航的应用程序。在模态中使用 [self parentViewController]。总是给 UINavigationController。在调用类中使用 [[self navigationController] visibleViewController] 为我提供了它自己的视图控制器的正确名称。我想要模态框内的信息。 对不起。没有具体解决您的回复:不,我确实在使用 [self presentModalViewController:addNavCon animated:YES];都使用导航控制器。 @Hal Stevens:那么......它应该可以正常工作!您是否尝试过创建一个新项目进行测试? 请看我上面的编辑。谢谢。

以上是关于视图控制器调用模态视图的主要内容,如果未能解决你的问题,请参考以下文章

从模态视图控制器调用方法

关闭模态视图并调用初始视图控制器

在模态视图被解除后,父视图控制器中是不是有一个委托被调用?

模态视图控制器不调用呈现视图控制器的dismissModalViewControllerAnimated:方法

当模态视图控制器被解除时如何调用函数

尝试从外部模态视图控制器调用视图控制器函数时出现致命错误