呈现用于登录的 UIViewController

Presenting a UIViewController for Login

我正在构建我的应用程序,它要求用户进行身份验证。 如果与服务器的会话过期,它会弹出登录控制器。 到目前为止,一切都很好。问题是,当用户打开应用程序并且显示第一个屏幕(空 table 视图)时,然后显示登录屏幕。 我知道这是一个细节,但我认为这是不对的。

这是我的 MainViewController,位于 Navigation Controller 下。 代码:

-(void)viewDidAppear:(BOOL)animated{
NSLog(@"Username: %@",[MMCurrentUser email]);

//Check if the user is logged and shows the sites else it shows the login screen

if(![MMCurrentUser email]){

    LoginLaunch *ll;
    ll= [[LoginLaunch alloc]initLoginScreenFrom:self];

}}

如果我将该代码放入 willAppear 中,我会收到警告:"Presenting view controllers on detached view controllers is discouraged." 并且问题仍然存在。

谁知道解决这个问题的好方法?

也许干净的方法是让您的第一个视图控制器看起来像某种 'Wait a second... (checking login)' 屏幕 - 或者更好,正如您在评论中提到的那样 - 启动图像的平滑延续;从那里,根据身份验证的结果转换到不同的视图控制器:

  • 成功: 继续导航 controller/table 视图控制器。
  • 失败:继续'login'查看控制器。