pipe理login/注销转换的build议

我有一个应用程序,只有当用户通过身份validation才能使用。 特别是,我创build了两个不同的UIViewController。 第一个叫做LoginViewController,第二个叫做HomeViewController。 在applicationDidFinishLaunching:方法中,创buildLoginViewController,然后添加到rootViewController属性中,如下所示:

 LoginViewController* loginCtr = ... // alloc and initiWithNibName... self.window.rootViewController = loginCTr; [loginCtr release]; 

Whitin LoginViewController我创build了一个执行login的方法。 当用户通过身份validation时,我执行一个名为performLogin的方法。

 - (void)performLogin { MyAppDelegate *appDelegate = (MyAppDelegate *)[[UIApplication sharedApplication] delegate]; [appDelegate switchView]; } 

swicthView方法已经在Application委托类中实现了。

 - (void)switchView { if(VIEW_TYPE == kLogin) // Display Login { // create a new LoginViewController and assign it to rootViewController } else // Display Home { // create a new HomeViewController and assign it to rootViewController } } 

鉴于以前的代码,是否可以实现更优雅的机制来pipe理login/注销转换,或者这种types的实现可以被认为是有价值的解决scheme?

先谢谢你。

另一个选项,我将设置HomeViewController作为rootViewController。 在viewDidLoad或viewDidAppear方法(在HomeViewController上显示任何信息之前),我将检查用户是否具有login凭证。 如果没有,我将显示loginViewController作为一个模式来请求用户login凭证。 在这种情况下,我不需要改变窗口的rootViewController。

从iOS 5开始,我开始使用UIViewController的新包容API来pipe理login/注销转换。

实现一个容器视图控制器

如果iOS 5不可用,我会看到类似的方法写作高品质的视图控制器 。

希望有所帮助。