以编程方式删除 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的主要内容,如果未能解决你的问题,请参考以下文章