2013-11-24 61 views
1

我正在用四個視圖控制器在TabBarController中排隊構建應用程序。我需要獲取對當前顯示的viewcontroller的引用,以便能夠在appdelegate中執行switch語句。我的意思是我想做的事情是這樣的:如果ViewController1是顯示做些什麼,如果顯示ViewController2做別的事情,...引用到當前在TabBarController中顯示的視圖控制器

任何人都可以幫助我嗎?

回答

0

這裏真正的問題是什麼?

標籤欄對象會告訴你哪個控制器當前顯示。爲了使用它的財產selectedViewController。這裏的詳細信息: https://developer.apple.com/library/ios/documentation/uikit/reference/UITabBarController_Class/Reference/Reference.html#//apple_ref/occ/instp/UITabBarController/selectedViewController

如果您努力訪問標籤欄控制器本身,... 沒有可用的功能/方法等。在應用程序委託中保留對tabbarcontoller對象的引用是一種常見模式。 此引用通常設置爲applicationDidLoadWithOptions,其中標籤欄或者從故事板加載,或者在以編程方式加載和顯示它時加載和顯示。

有一個很好的文檔訪問代理的方式。那就是:

MyAppDelegate *delegate = (MyAppDelegate *)[UIApplication sharedApplication].delegate; 

然後你從那裏進入,訪問tabbar並獲取當前選中的控制器。 (如果所選視圖控制器是導航控制器堆棧的根,那麼它本身可能是視圖控制器的堆棧,但這取決於您的應用程序是如何從那裏構建的。)

+0

事情是,我試圖顯示一個來自appdelegate的電子郵件表單,但我首先需要知道哪些viewcontroller當前正在顯示,以便能夠調用當前的郵件方法。現在明白了? – TomasJ

+0

是的,我明白。問題是?獲取您的選項卡視圖控制器並從中接收選定的視圖控制器。 –

+0

我該怎麼做?我怎樣才能在appdelegate中指定? – TomasJ

相關問題