2016-04-25 60 views
0

我想爲我的應用程序做一個模板...可以說我的應用程序加載相同的視圖控制器有一個CollectionView的4選項卡。根據選定的索引,我必須將內容加載到收集視圖中。我從Appdelegate手動設置標籤欄。我的問題是這可能像實例化一次Tabbarcontroller的所有4個選項卡相同viewgentroller。如果是的話,我將如何正確地知道選擇了哪個索引?相同的視圖控制器在選項卡欄控制器的4個選項卡是給出錯誤的選定的選項卡控制器選定的索引

代碼tabBarcontroller中的appdelegate

   self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 
       let tabBarController = UITabBarController() 

       let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil) 

       let firstImage = UIImage(named: "image1") 
       let secondImage = UIImage(named: "image2") 
       var controllers = [UIViewController]() 
       for var i = 0; i < self.myList.count; i++ { 

       let vc : ViewControllerTwo = storyboard.instantiateViewControllerWithIdentifier("view1") as! ViewControllerTwo 

        if(i == 0 || i == 3) 
        { 
         vc.tabBarItem = UITabBarItem(
          title: self.myList[i], 
          image: firstImage, 
          tag: i) 
         controllers.append(vc) 
        } 
        else 
        { 
         vc.tabBarItem = UITabBarItem(
          title: self.myList[i], 
          image: secondImage, 
          tag: i) 
         controllers.append(vc) 
        } 


       } 


       self.tabBarController.viewControllers = controllers 
       self.window?.rootViewController = self.tabBarController 


       self.self.window?.rootViewController = self.tabBarController 
       self.window?.makeKeyAndVisible() 
+0

我想我解決它使用了一個的NSTimer方法,有時變化並獲得國家給予如下描述狀態不好 http://stackoverflow.com/questions/28099148/switch-tab-bar- programatically-in-swift – Saty

+0

您應該將您的類設置爲標籤欄控制器的代理,然後您將調用'didSelectViewController'。您可以將選定的視圖控制器與'controllers'數組進行比較,以確定所選視圖控制器的索引 – Paulw11

+0

除非您做錯什麼,否則您不應該需要NSTimer ... – Paulw11

回答

0

如果你設置你的類爲代表您的標籤欄控制器,你會得到的didSelectViewController委託方法的調用。然後,您可以使用您的controllers陣列來確定索引;

self.window = UIWindow(frame: UIScreen.mainScreen().bounds) 
let tabBarController = UITabBarController() 
tabBarController.delegate = self 


func tabBarController(_ tabBarController: UITabBarController, 
    didSelectViewController viewController: UIViewController) { 

    if let index = self.controllers.indexOf(viewController) { 
     // Do something with index 
    } 
} 
相關問題