我有一个只有在用户通过身份验证后才能使用的应用程序。特别是,我创建了两个不同的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
}
}
鉴于以前的代码,是否可以实现更优雅的机制来管理登录/注销转换,或者这种类型的实现是否可以被视为有价值的解决方案?
提前谢谢。
答案 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。
希望有所帮助。