如何在不离开当前视图的情况下关闭 modalViewController?

Posted

技术标签:

【中文标题】如何在不离开当前视图的情况下关闭 modalViewController?【英文标题】:How can i dismiss modalViewController without leaving current view? 【发布时间】:2011-10-18 10:40:16 【问题描述】:

我的应用程序是基于视图的应用程序。第一个视图是登录视图。登录视图后,我有 MainMenuCcontroller,它有一个 tabBarController:

 @interface RunnoMainMenuController : UIViewController 
IBOutlet UITabBarController *tabBarController;
 

从登录视图控制器,我将使用这行代码进入 MainMenuController:

 [self presentModalViewController:mainMenu animated:YES];

此控制器有 4 个选项卡。现在我需要在 tabBarItem 的 viewWillAppear 中做一些事情。当我点击 tabBarItem 时不会调用 viewWillAppear。我在其中一个 tabBarItem 的视图中有一个按钮,它使用 presentModalViewController 弹出一个表视图控制器。此 tableView 使用 dismissModalViewControllerAnimated:YES 将其消失。当我弹出这个 tableview 并关闭它时,每个 tabBarItem 的 viewWillAppear 都可以正常工作。如果我将在 MainMenuController 中关闭 modalViewController,那么它将再次返回登录视图。如何在不离开当前视图或任何其他解决方案的情况下关闭 modalViewController?提前致谢。

【问题讨论】:

【参考方案1】:

您可能需要考虑如何呈现您的观点。标签栏控制器应该始终是窗口的根视图控制器。来自Apple docs:

部署标签栏界面时,必须将此视图安装为 你的窗口的根。与其他视图控制器不同,标签栏 界面永远不应该作为另一个视图的子项安装 控制器。

与其将登录视图显示为根视图,将标签栏显示为模态视图控制器,不如换一种方式尝试。选项卡栏控制器作为根,登录视图显示为来自最初显示的任何选项卡的视图控制器的模式视图控制器。关闭它会显示标签栏控制器。

【讨论】:

以上是关于如何在不离开当前视图的情况下关闭 modalViewController?的主要内容,如果未能解决你的问题,请参考以下文章

在不添加完成键的情况下关闭数字键盘式键盘

如何在不关闭模式的情况下关闭从 modalViewController 推送的 viewController?

如何在不关闭 TCP 连接的情况下关闭处理 TCP 请求的线程?

如何在不终止正在运行的 jar 文件进程的情况下关闭终端 [重复]

如何在不失去对 React Native 的关注的情况下关闭键盘。(至少显示光标)

在 Unity3D 中如何在不休眠的情况下关闭屏幕?