簡體   English   中英

如何在Tabbar Controller之前顯示登錄視圖?

[英]How to display login view before Tabbar Controller?

我目前正在開發一個iOS應用,該應用允許用戶查詢其帳戶(在網站上創建帳戶)。

我希望該用戶可以在連接后查詢其帳戶。 所以,我想要第一個視圖將是登錄視圖。 接受連接后,登錄視圖消失,第一個視圖控制器加載數據。

我怎樣才能做到這一點?

在FirstViewController的viewDidAppear上,添加以下代碼以在Tab之前顯示Login ViewController。

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    AppDelegate * delegate = [[UIApplication sharedApplication] delegate];
    if (!delegate.login) {  // BOOL value to know if user is logged in or not.If user succefully logged in set value of this as YES else NO.
    LoginViewController * lvc = [[LoginViewController alloc] initWithNibName:@"LoginViewController" bundle:nil];

    [self presentModalViewController:lvc animated:NO];
    [lvc release];


    }
}

您可以使用presentModalViewController(_:animated:completion:)展示登錄視圖控制器。

成功登錄后,使用dismissModalViewControllerAnimated(_:completion:)關閉該視圖控制器,因此您可以看到選項卡欄。

我嘗試了模態視圖控制器方法(即,在啟動時以模態形式顯示登錄視圖控制器,並且將animated:設置為false ),但是存在一些問題:如果您嘗試過早呈現它(即, viewWillAppear(animated:) ),它不顯示。 如果嘗試得太晚(例如, viewDidAppear(animated:) ),則底層視圖控制器僅在一瞬間(至少在iOS 8上)“顯示”。

相反 ,我要做的是使用登錄視圖控制器作為窗口的根視圖控制器(設置為主故事板的初始視圖控制器)啟動我的應用程序,一旦身份驗證成功,我就為應用程序的“交換”根視圖控制器。主標簽欄控制器(我懶惰地實例化了一個單獨的故事板)。

為了實現平滑過渡(動畫)而不是立即實現,我在登錄視圖控制器中使用了以下代碼:

// Run this code when authentication succeeds:

UIView.transitionWithView(self.view.window,
            duration: 0.3,
            options: UIViewAnimationOptions.TransitionCrossDissolve,
            animations: {
                window.rootViewController = tabBarController
            },
            completion: nil
        )

想法來自這里

不過,我遇到的一個問題是,我插入的選項卡欄在所選(當前)選項卡中包含一個導航控制器,並且在過渡期間,導航欄將顯示為向上移動並“重疊”應用程序的狀態欄,僅動畫完成后跳回其正確位置。 非常煩人...通過將以下代碼行添加到導航控制器中包含的子視圖控制器中,我修復了該問題:

override func viewWillAppear(animated: Bool)
{
    super.viewWillAppear(animated)

    self.navigationController?.navigationBar.layer.removeAllAnimations()
}

這里修復

更新:我注意到在某些模擬器(iPhone 6 +,iOS 9.0)上,不會出現導航欄“跳轉”,而是將其快速(但柔和)的動畫制作到位。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM