2011-05-13 42 views
2

我想知道以下是切换视图的可接受方式吗?通过设置根视图控制器切换视图有什么问题吗?

AppDelegate.m

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

双方的viewController和settingsNavigationViewController从笔尖文件在应用程序启动时加载。

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

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

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

我需要重组我的应用吗?或者这是做这件事的好方法,还是我需要重构我的应用?

回答

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]; 
+0

谢谢。这对我正在尝试做的事情非常合适。改变了我的代码: ' - (IBAction为)switchViews { 如果(self.viewController.modalViewController!){ [self.viewController presentModalViewController:self.settingsNavigationViewController动画:是]; } else { [self.viewController dismissModalViewControllerAnimated:YES]; } }' – 2011-05-13 17:45:14

-1

我认为你必须使用tabbarcontroller。

+0

对不起,但这是不正确的。请参阅接受的答案。 – 2011-12-08 19:24:48