以编程方式删除 NavigationController

Posted

技术标签:

【中文标题】以编程方式删除 NavigationController【英文标题】:Removing NavigationController Programmatically 【发布时间】:2016-08-04 13:21:56 【问题描述】:

应用程序包含多个导航控制器。 (下例)

NavigationController1 ----> ViewController1 ---> TabBarController --> 
NavigationController2 ----> ViewController2

每当 ViewController1 将消失时,我都会使用 NavigationController.view.removeFromSuperview 删除 NavigationController

每当加载 ViewController2 时我都会面临这个问题。我只看到黑屏没有别的。可能是什么问题?

什么是移除 navigationController 的最佳方式?

【问题讨论】:

【参考方案1】:

黑屏不过是UIWindow。当您删除 NavigationController 时,窗口没有任何 NavigationController。因此,您必须在删除第一个 NavigationController 后立即为窗口设置 NavigationController。

你可以这样试试:

 let appDelegate = UIApplication.sharedApplication().delegate as! AppDelegate

 appDelegate.window?.rootViewController = YOUR_NAVIGATION_CONTROLLER_OBJECT;

【讨论】:

所以每当我删除第一个导航控制器时,我需要在 appDelegate 文件中正确设置窗口? 无需从应用代理设置。您可以为此使用 AppDelegate 对象。请查看我的更新答案。 我的朋友尝试添加您的代码时收到此错误:无法分配给属性:'appDelegate' 是不可变的【参考方案2】:

这可能会有所帮助:

[self.window addSubview:secondNavigationController.view];

在窗口中添加第二个导航控制器的视图。

【讨论】:

以上是关于以编程方式删除 NavigationController的主要内容,如果未能解决你的问题,请参考以下文章

以编程方式从通知托盘中删除 UILocalNotification

以编程方式删除 Facebook 像素

ActiveMQ - 以编程方式删除队列

以编程方式删除 Spotify 播放列表

以编程方式删除 NavigationController

以编程方式删除/检查 iOS 密码