2012-07-22 28 views
0

我正在製作我的第一個應用程序。我使用Xcode 4和故事板來更好地瞭解正在發生的事情。該應用程序啓動(在故事情節)與TabBarController與4個選項卡。其中兩個選項卡是帶有tableview系統的導航控制器,另外兩個選項卡是常規viewcontroller。使用XCode 4與故事板爲AppDelegate中的TabBar創建代表

我只在故事板中製作了TabBarController本身,沒有爲它做任何類。因此,所有標籤在應用程序中同時「運行」,它們在我輸入另一個標籤後返回時保持不變。它看起來有點不專業,也可能對iPhone不好?

現在我想讓左邊的選項卡在輸入另一個選項卡時變爲無效/重置爲RootViewController。

換言之,爲TabBar製作某種委託功能,因此只有選定的選項卡處於活動狀態。類似的東西。糾正我,如果我錯了,我只是想了解我需要做什麼。

經過我的研究後我明白,我必須爲AppDelegate.h中的TabBar創建一個屬性,然後在AppDelegate.m中合成它,然後以某種方式使TabBar的委託給AppDelegate(self?)或其他東西,這就是在這裏完成某種方式(AppDelegate.m):

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
//some statements. 

再加入像這樣的地方在AppDelegate.m:

- (void)tabBar:(UITabBar *)tabBar didSelectItem:(UITabBarItem *)item 
//With some statements about the viewcontrollers 

但正如你看到的,我不是很有經驗的編碼和我無法找到一個教程/指南我明白,因爲他們使用xibs e tc ..那麼有人可以幫我做這個功能嗎?我將需要代碼示例來了解如何去做,如果你只是用語言來描述這個過程,如果你理解我的意思,它會給我提出很多新的問題。

是reprecent的4個選項卡(2個tableviews和2次),讓我們把它們叫做類:

FirstTableViewController,SecondTableViewController,FirstViewController,SecondViewController

我不知道這是否足以讓這個功能AppDelegate,或者如果我必須爲TabBar創建類(.h/.m),請在不同的ViewControllers類中添加代碼等。

我希望有人能以最簡單,最正確的方式幫助我做到這一點,我相信其他許多人在應用開發的初級階段就會陷入這種困境而且會發現這個非常有用的答案。

謝謝你的幫助。

回答

2

這是Apple打算和用戶期望從基於標籤欄的應用程序的行爲。它允許您查看應用程序的不同區域而不會丟失自己的位置。

但是,如果在某些情況下想要將視圖控制器重置爲其原始狀態,則可以在給定視圖控制器的viewWillAppear中執行此操作。

如果您想要通過應用程序代理&處理此選項卡欄控制器的委託方法,您可以在加載Storyboard/XIB後引用標籤欄。只需使用:

rootViewController.tabBarController.delegate = self您的應用程序委託內部。

或者,您也可以通過在左窗格中選擇對象列表中的標籤欄控制器和去身份檢查,改變從UITabBarController類的自定義類的tabBarController改變自己的自定義類的故事板子類。

+0

好,所以沒有任何錯誤,只是現在它沒有任何代理函數來處理tabbar?如果是這樣,這只是一個桌面視圖,如果在選擇另一個選項卡時它會變爲默認值,這將是實用的。然後我會在viewWillAppear中解決這個問題。 – ingenspor 2012-07-22 15:05:34

+0

對,我想大多數人會期待這種行爲。 – 2012-07-22 17:55:38