通过设置根视图控制器切换视图有什么问题吗?

时间:2011-05-13 10:20:02

标签: iphone ios rootview

我想知道以下是否可以接受切换视图的方式?

AppDelegate.m

- (IBAction) switchViews
    {
    if (self.window.rootViewController == self.viewController) {
        self.window.rootViewController = self.settingsNavigationViewController;
    } else {
        self.window.rootViewController = self.viewController;
    }
}

当应用程序启动时,viewController和settingsNavigationViewController都会从nib文件加载。

主视图(viewController)包含一个滚动视图,其中包含3个用于无限滚动效果的图像视图,以及顶部的搜索栏和底部的工具栏。

第二个视图适用于我的应用程序设置。它是一个导航控制器,其性能与设置包类似。

两个视图都有一个调用switchViews的按钮;

我是否需要重新构建我的应用程序,或者这是一个很好的方法,还是我需要重构我的应用程序?

2 个答案:

答案 0 :(得分:2)

虽然它可以做到这一点,(苹果文档在这里解释并且似乎没有阻止这个

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIWindow_Class/UIWindowClassReference/UIWindowClassReference.html%23//apple_ref/occ/instp/UIWindow/rootViewController

这也意味着您的现有视图已被删除..

它肯定有一点代码味道。由于这是一个设置对话框,为什么不将设置导航控制器加载到模式视图中,如下所示(与下面类似)。就个人而言,这似乎更清晰,更符合用户的期望......

[[self.viewController] presentModalViewController:self.settingsNavigationViewController animated:YES];

答案 1 :(得分:-1)

我认为你必须使用tabbarcontroller。