管理登录/注销转换的建议

时间:2011-12-14 22:38:14

标签: ios login uiviewcontroller uiapplicationdelegate

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

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

Whitin LoginViewController我创建了一个执行登录的方法。用户通过身份验证后,我会执行一个名为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
   }
}

鉴于以前的代码,是否可以实现更优雅的机制来管理登录/注销转换,或者这种类型的实现是否可以被视为有价值的解决方案?

提前谢谢。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

从iOS 5开始,我开始使用UIViewController s的新收容API来管理登录/注销转换。

Implementing a Container View Controller

如果iOS 5不可用,我会看到类似的方法writing-high-quality-view-controller

希望有所帮助。