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
}
私は、次のような問題があります。
- 押すとロックされたタブでは、ログイン画面が正しく表示されます。もう一度同じタブを押すと、ログイン画面が消え、ログイン画面が隠れているビューにアニメーションが表示され、ログイン画面が再び表示されます。これを止める方法はありますか?
もOKですが、self.presentに使用しましょう(:偽、完了:アニメーションVCを、nilを)私は、近いが表示されないのナビゲーションバーから生じる新たな問題を持っていますボタンは機能しなくなり、次の新しい警告に加えて最初のタブに戻ってきます。「分離されたビューコントローラへのビューコントローラの提示はお勧めしません」 私の目的は、アプリをナビゲートする能力を維持することです。 – user1202888
はい、ナビゲーションバーを持つためには、ナビゲーションバーを 'UserLoginViewController'に埋め込む必要があります。閉じるボタンのためにUITabBarItemを追加するだけです。 – xmhafiz
この場合、 'UserLoginViewController'の代わりに' UserLoginViewController'のUINavigationControllerを提示する必要があります – xmhafiz