2016-07-29 121 views
1

我使用的類擴展爲UITabBarController。我需要設置我的課程的self.tabBarController.selectedIndex屬性才能切換選項卡。以編程方式獲取視圖控制器的實例

因爲我要設置這個變量/調用從另一個類改變這個變量的方法,我必須有我的自定義類的實例,它被稱爲TabsController

到目前爲止,我已經看過這兩個職位,但他們涉及使用故事板,我做的編程幾乎所有,事實上這是我的整個故事板:

enter image description here

如何編程解決這個問題呢?

Get Instance Of ViewController From AppDelegate In Swift

Access the instance of a Viewcontroller from another in swift

回答

2

UITabBarController s爲most often used作爲應用程序的rootViewController。當你不使用故事板,應用程序啓動後,如果您設置的TabsController的實例作爲應用程序的窗口的rootViewController,你可以參考這種情況下從任何地方在您的應用程序,像這樣:

if let tabsController = UIApplication.sharedApplication().delegate?.window??.rootViewController as? TabsController { 
    tabsController.selectedIndex = 2 
} 
+0

謝謝!此代碼有效。快速的問題,你說如果我把'TabsController'的實例設置爲'rootViewController',那麼我可以通過使用你的代碼來引用那個實例。然而,我只是試了這個代碼,它工作,我沒有輸入任何設置'rootViewController'的代碼。這是我應該擔心的事嗎? – Roymunson

+0

@Roymunson您在問題中的故事板很可能是將窗口的根視圖控制器設置爲「TabsController」。您可以通過查看您的[目標的'常規'設置選項卡](http://imgur.com/gallery/YqxcI)「,其中故事板被設置爲應用程序的入口點來確認。在故事板「TabsController」中[設置爲'Initial View Controller'](http://imgur.com/I14mM7Z),然後將其設置爲根視圖控制器。 – gravicle

0

你可以試試這個

let controller = self.tabBarController.viewControllers[self.tabBarController.selectedIndex] 
相關問題