【问题标题】:Put a UIViewController on top of a UINavigationController stack将 UIViewController 放在 UINavigationController 堆栈之上
【发布时间】:2015-01-19 01:24:32
【问题描述】:

我有一个从 uinavigationcontroller 的第一个索引设置的视图控制器:

AViewController *aController = [self.navigationController.viewControllers objectAtIndex:0];

但有时它并不完全正确。当我在下面执行此操作时,在打开一个应用程序一天后,它只会停在导航控制器上并且不会加载 AViewCo

【问题讨论】:

  • 该代码对“加载”AViewController 没有任何作用。您只是将 aController 分配给导航控制器的根视图控制器。导航控制器的堆栈中是否已经有一个 AViewController,或者您是否要在其中添加它?
  • 我有一个错误,我的导航堆栈为空。如何将视图控制器添加回堆栈?
  • 您应该弄清楚为什么您的堆栈为空并修复该错误。堆栈永远不应该为空,因为根视图控制器应该始终存在。你一定是在以某种方式删除它。

标签: ios iphone uiviewcontroller uinavigationcontroller


【解决方案1】:

self.navigationController.viewControllers 只是获取您当前在 UINavigationController 中的内容。如果你没有从中得到任何东西,则意味着这个 UINavigationController 内部没有 UIViewController。拿到手后,你可能会做检查。

顺便说一句,请务必检查文档。它可能有其他方法可以帮助您解决您的情况。不太确定你想做什么。

您访问 UIViewController 的时间可能没有完全加载。这就是为什么你不能得到它。

【讨论】:

  • 为什么加载不全?
  • 你说有时候效果不太好。我不知道那是什么意思。
  • 有时当我转到第一个视图控制器时它工作正常。但是如果我的应用程序打开 24 小时,索引 0 处的视图控制器不会加载
  • 你可能去调试它。有时我真的不能说你的问题是什么。最好你根据你在这里得到的东西自己解决它。祝你好运。
【解决方案2】:

你应该在使用时检查navigationController。只需结合 setViewControllers:animated:viewControllers objectAtIndex:0 方法。如果堆栈中没有 AViewController。只是新的或通过setViewControllers:animated: 分配旧的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 1970-01-01
    • 2013-03-19
    • 2011-01-07
    • 1970-01-01
    相关资源
    最近更新 更多