簡體   English   中英

TabBarController不會更改所選索引

[英]TabBarController doesn't change selected index

我試圖將選定的tabBarItem(和Controller)從索引1更改為索引0。

這是我的代碼:

  override func viewDidLoad() {

    super.viewDidLoad()
    self.tabBarController?.delegate = self


    if UserDefaults.standard.double(forKey: "is_logged") !=  1 {
        // print always selectedIndex= Optional(0)
        print("selectedIndex= \(self.tabBarController?.selectedIndex)")
        self.tabBarController?.selectedIndex = 0            
     }    

    } 

我不確定為什么要在viewcontroller viewdidload中更改selectedIndex。 因為它也會顯示選定的索引視圖控制器。

請在viewWillAppear或viewDidAppear中更改它,而不是viewDidLoad。

更新:這將不起作用,因為您的代碼是在tabbarController的第二個(1個索引)控制器中編寫的。 UITabBarController僅在啟動時加載第一個(0索引)控制器。

最好的控制方法是在UITabBarController中為UITabBarController創建子類,並在viewWillAppear中執行類似的操作。

 /* viewWillAppear of TabBarController */
    override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)

        /* Check if user logged in */
        if UserDefaults.standard.double(forKey: "is_logged") !=  1 {

            // Select first index
            self.selectedIndex = 0
        } else {
            /* User not logged in */

            // Select second index
            self.selectedIndex = 1
        }
        //Current selected index
        print("selectedIndex = \(String(describing: self.selectedIndex))")
    }

如果您想在viewController中執行此操作,則在第一個控制器的viewWillAppear中執行以下操作

下面的代碼已更新

 /* viewWillAppear of FirstViewController */
        override func viewWillAppear(_ animated: Bool) {
            super.viewWillAppear(animated)

            // check tabBarController is not nil
            if self.tabBarController != nil {

                /* Check if user logged in */
                if UserDefaults.standard.double(forKey: "is_logged") !=  1 {

                    // Select first index
                    self.tabBarController?.selectedIndex = 0

                } else {
                    /* User not logged in */

                    // Select second index
                    self.tabBarController?.selectedIndex = 1
                }
                //Current selected index
                print("selectedIndex = \(String(describing: self.tabBarController?.selectedIndex))")
            } else {
                print("tabBarController is nil :( ")
            }
        }

希望這會有所幫助:)

暫無
暫無

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

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