2013-07-26 80 views
0

我開始與iOS 6的ARC和故事子類的UITabBarController故事板

一個新的項目,我做了一個非常簡單的應用程序,有一個的TabBar和2次

enter image description here

所以現在我創建一個帶有擴展UITabBarController的TestViewController文件,並將自定義類放入故事板。

現在的問題是,我想實現像

- (BOOL) tabBarController:(UITabBarController *)tabBarController shouldSelectViewController:(UIViewController *)viewController; 

一些委託方法,但它永遠不會調用它。誰能幫忙?

我也注意到,如果我把這個代碼放在第一個視圖控制器,它工作正常。它看起來像第一個視圖控制器覆蓋之前的TabBarController。我很困擾。

爲更多的測試我在TestViewController.m增加了一些日誌記錄:

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 
    NSLog(@"%@",self.tabBarController.viewControllers); 
} 

和視圖控制器爲空。

我甚至試着做self.tabBarController.delegate = self;

,但仍然沒有解決。

+0

行,所以我嘗試了一些更多的:當我加上'@財產(非原子,副本)的NSArray * viewControllers;'我'TestViewController.h'文件,我可以訪問視圖2視圖控制器!這是很好的......現在,當我去的第一個視圖控制器,並獲得tabBarController屬性和設置成'self'然後一切工作委託...那麼,爲什麼是我的文件,不是馬上在tabbarcontroller在tabbarcontroller那後來被使用? –

回答

1

TestViewController是你的標籤欄控制器,讓你的日誌應該只是self.viewControllers,不self.tabBarController.viewControllers。您不需要添加屬性viewControllers,因爲您的子類從UITabBarController繼承了該屬性。您的委託消息未被調用的原因是由於相同的問題。你應該設置委託具有(在TestViewController):

self.delegate = self; 

這是假設你想TestViewController是代表,這是我不清楚,如果這就是你想要的。

+0

稀釋,使SOOOO多大意義:)有時也可以是這麼簡單...謝謝 –

0

你有沒有嘗試在界面生成器中鏈接它們? 添加到您的頭文件第一次雖然 @property (nonatomic, retain) IBOutlet UITabBarController *tabBarController;

+0

我無法將它們鏈接到IB。只是不讓我。如果我只是將它添加到文件中,它只是空的。 –

+0

你把它添加到你的appDelegate中了嗎? – AMAN77

+0

no ...在TestViewController類中。爲什麼我需要它在的appdelegate? –

相關問題