将 UIViewController 放在 UINavigationController 堆栈之上
Posted
技术标签:
【中文标题】将 UIViewController 放在 UINavigationController 堆栈之上【英文标题】:Put a UIViewController on top of a UINavigationController stack 【发布时间】:2015-01-19 01:24:32 【问题描述】:我有一个从 uinavigationcontroller 的第一个索引设置的视图控制器:
AViewController *aController = [self.navigationController.viewControllers objectAtIndex:0];
但有时它并不完全正确。当我在下面执行此操作时,在打开一个应用程序一天后,它只会停在导航控制器上并且不会加载 AViewCo
【问题讨论】:
该代码对“加载”AViewController 没有任何作用。您只是将 aController 分配给导航控制器的根视图控制器。导航控制器的堆栈中是否已经有一个 AViewController,或者您是否要在其中添加它? 我有一个错误,我的导航堆栈为空。如何将视图控制器添加回堆栈? 您应该弄清楚为什么您的堆栈为空并修复该错误。堆栈永远不应该为空,因为根视图控制器应该始终存在。你一定是在以某种方式删除它。 【参考方案1】:self.navigationController.viewControllers
只是获取您当前在 UINavigationController 中的内容。如果你没有从中得到任何东西,则意味着这个 UINavigationController 内部没有 UIViewController。拿到手后,你可能会做检查。
顺便说一句,请务必检查文档。它可能有其他方法可以帮助您解决您的情况。不太确定你想做什么。
您访问 UIViewController 的时间可能没有完全加载。这就是为什么你不能得到它。
【讨论】:
为什么加载不全? 你说有时候效果不太好。我不知道那是什么意思。 有时当我转到第一个视图控制器时它工作正常。但是如果我的应用程序打开 24 小时,索引 0 处的视图控制器不会加载 你可能去调试它。有时我真的不能说你的问题是什么。最好你根据你在这里得到的东西自己解决它。祝你好运。【参考方案2】:你应该在使用时检查navigationController。只需结合
setViewControllers:animated:
和 viewControllers objectAtIndex:0
方法。如果堆栈中没有 AViewController。只是新的或通过setViewControllers:animated:
分配旧的。
【讨论】:
以上是关于将 UIViewController 放在 UINavigationController 堆栈之上的主要内容,如果未能解决你的问题,请参考以下文章
将 UIViewController 放在 UINavigationController 堆栈之上
将 UIViewController 放在 UIView 中
如何将 Eureka 表单与另一个表放在 UIViewController 中?
UITabBarController 的 TabBar 阻止 UIViewController 由它托管的 UINavigationController 推送