iPhone在ViewDid出现之前弹出视图控制器
在我的应用程序中,我有一个登录,如果登录成功,他们将为用户获取一个会话id。当用户的会话过期,他们请求一个包含过期会话的页面时,后端会报告该会话已过期,用户需要重新登录,我的应用程序将调用iPhone在ViewDid出现之前弹出视图控制器,iphone,objective-c,uiviewcontroller,Iphone,Objective C,Uiviewcontroller,在我的应用程序中,我有一个登录,如果登录成功,他们将为用户获取一个会话id。当用户的会话过期,他们请求一个包含过期会话的页面时,后端会报告该会话已过期,用户需要重新登录,我的应用程序将调用popToRootViewControllerAnimated(登录页面)。我正在使用NSURLConnection类计划在下载完成时回调我的UIViewController。我遇到的问题是,我在我的viewdiload期间安排了NSURLConnection,并且连接会在视图控制器出现之前报告。我会将NSUR
popToRootViewControllerAnimated
(登录页面)。我正在使用NSURLConnection
类计划在下载完成时回调我的UIViewController
。我遇到的问题是,我在我的viewdiload
期间安排了NSURLConnection
,并且连接会在视图控制器出现之前报告。我会将NSURLConnection
放在viewdidappease
中,但我不想每次视图出现时都联系服务器。有人知道解决此问题的最佳方法吗?首先,声明一个枚举变量:
typedef enum {
StatusLoggedOut,
StatusAttemptingLogin,
StatusLoggedIn
} LoginStatus;
然后将成员变量添加到视图控制器以存储登录状态。然后,内部视图显示:您可以执行以下操作:
- (void)viewDidAppear:(BOOL)animated
{
if (loginStatus == StatusLoggedOut) {
loginStatus = StatusAttemptingLogin;
// start the NSURLConnection
}
}
登录完成后,您可以将状态切换到StatusLoggedIn或StatusLoggedOut(取决于结果)
你可以用一个简单的BOOL侥幸逃脱,但经验告诉我,最好代表州与州之间的所有人
另外,您没有问这个问题,但我认为如果您将登录屏幕显示为模式视图,用户体验会更好;使用
poptrootviewcontroller
会导致用户失去在应用程序中的位置,这很烦人。(除非您正在保存和恢复它,否则您将为自己做大量工作。)+1关于模式视图控制器登录的非常好的建议。