【问题标题】:Navigation Controller's Root View Controller导航控制器根视图控制器
【发布时间】:2012-07-11 08:41:18
【问题描述】:

我的 viewController 是这样的:


startViewController ------> menuViewController 
                                          \
                                           \ ------> ImportantViewController

startMenu 我推menuView 然后我再次推importantView,我将importantView 作为我的rootViewcontroller,让它成为我的父视图,如下所示:

UINavigationController *navControl = [[UINavigationController alloc] initWithRootViewController: vc];
[self presentModalViewController: navControl animated: YES];

从那以后我通过importantView 推送了视图:

[self.navigationController pushViewController:vc animated:YES];

现在我的概率是这样的:

ImportantVIew 作为我的rootView 推送到menuView 推送到ViewA 然后推送到视图B 然后选择是返回menuView 还是返回ViewA

我的问题是: 我想将我的ViewB 设为rootView,然后当我转到ImportantView 时,它会将其返回为rootView。是否可以有 2 个 rootView?还是我需要互相替换?

我们将不胜感激。谢谢。

【问题讨论】:

    标签: iphone ios xcode


    【解决方案1】:

    一直在更改根视图控制器的原因是什么?

    通过 viewA 和 viewB 循环调用,您将构建无穷无尽的视图控制器堆栈。这可能不是你想要做的。

    退后一步,重新思考您想要实现的目标。您只想在 viewA 和 viewB 之间切换吗?在这种情况下,您应该选择与通常的 pushViewController 不同的架构/模式。阅读一些关于 removeFromParentViewController 或 transitionFromViewController:toViewController: 的内容。或者自己熟悉操作视图控制器链。这些东西可能有助于实现您想要创建的用户体验,而无需构建无穷无尽的视图控制器堆栈。

    【讨论】:

    • 我只需要在视图A和视图B之间进行转换,然后在视图相互导航时我需要一直保留视图B,
    • 好吧,然后寻找 transitionFromViewController:... 这当然是实现这一目标的一种选择。您可以选择处理模态视图控制器,它也提供了实现这一目标的方法。您可以稍后重新恢复那些最近隐藏的视图控制器,而无需每次都创建和初始化一个新的。
    • 我当然不介意,但很遗憾,我手边没有它。对不起。 (不同的项目 - 无法访问 iphone 代码/不同的位置 - 无法访问家庭资源)
    • 我的意思是我无法提供任何代码,因为我无法获得好的示例。你可以在这里找到一些有用的信息,有人问了一个类似的问题:stackoverflow.com/questions/11363337/… 对于那个你需要在 iOS 5.x 或更高版本中工作。此视频教程可能会有所帮助:youtube.com/watch?v=p8XHhQ8oU-g。这个更基础:youtube.com/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-21
    • 1970-01-01
    • 2014-04-10
    相关资源
    最近更新 更多