2016-10-26 10 views
0

私は、ルートビューとしてUITabBarControllerを持つアプリケーションを持っています。私は最初のタブ(タブ1)がすべてのユーザーに見えるように、ユーザーがアプリを見てログインする必要はありません。他のタブはLoginViewControllerの背後にロックされるはずです。タブバーコントローラ:ログインコントローラを表示+停止タブボタンをダブルタップ

私はロックされたビューで、次があります。

ActivityViewController.swift

override func viewWillAppear(_ animated: Bool) { 
    super.viewWillAppear(animated) 
    if AccessToken.current != nil { 
    // Do Stuff 
    } 
    else { 
     let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewController(withIdentifier: "UserLoginViewController") 
     self.navigationController?.pushViewController(vc, animated:false) 
    } 
} 

UserLoginViewController.swift

override func viewDidLoad() { 
    super.viewDidLoad() 

    // Do any additional setup after loading the view. 
    navigationItem.hidesBackButton = true 
    self.navigationController?.setNavigationBarHidden(true, animated: true) 
} 

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

    if AccessToken.current != nil { 
     _ = self.navigationController?.popViewController(animated: true) 
    } 
} 

// Functions to handle login omitted 
// I do the following once login is successful 
_ = self.navigationController?.popViewController(animated: true) 

// Close button to return to first no login required tab (Tab 1) 
@IBAction func closeButtonPressed(_ sender: AnyObject) { 
    // Send back to the first index in the tab bar controller 
    self.navigationController?.tabBarController?.selectedIndex = 0 
} 

私は、次のような問題があります。

  1. 押すとロックされたタブでは、ログイン画面が正しく表示されます。もう一度同じタブを押すと、ログイン画面が消え、ログイン画面が隠れているビューにアニメーションが表示され、ログイン画面が再び表示されます。これを止める方法はありますか?

答えて

0

ログインコントローラUserLoginViewControllerが一般的に使用されているため、UITabBarControllerの前に表示されます。成功のログイン時に、ログインコントローラの内部で、却下アクションを追加

if AccessToken.current != nil { 
    // Do Stuff 
} 
else { 
    let vc = UIStoryboard(name:"Main", bundle:nil).instantiateViewController(withIdentifier: "UserLoginViewController") 
    presentViewController(vc, animated: true, completion: nil) 
} 
+0

もOKですが、self.presentに使用しましょう(:偽、完了:アニメーションVCを、nilを)私は、近いが表示されないのナビゲーションバーから生じる新たな問題を持っていますボタンは機能しなくなり、次の新しい警告に加えて最初のタブに戻ってきます。「分離されたビューコントローラへのビューコントローラの提示はお勧めしません」 私の目的は、アプリをナビゲートする能力を維持することです。 – user1202888

+0

はい、ナビゲーションバーを持つためには、ナビゲーションバーを 'UserLoginViewController'に埋め込む必要があります。閉じるボタンのためにUITabBarItemを追加するだけです。 – xmhafiz

+0

この場合、 'UserLoginViewController'の代わりに' UserLoginViewController'のUINavigationControllerを提示する必要があります – xmhafiz

関連する問題