2010-03-27 34 views
3

這是我的app-delegate.m代碼存根 - 它永遠不會被調用。我的UITabBarController的didSelectViewController方法沒有被調用?

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { 
    NSLog(@"%s", __FUNCTION__); 
} 

正是在這樣的應用,delegate.h

@interface OrioleAppDelegate : NSObject <UIApplicationDelegate, UITabBarControllerDelegate> { 
    UIWindow *window; 
    UITabBarController *tabBarController; 
} 

@property (nonatomic, retain) IBOutlet UIWindow *window; 
@property (nonatomic, retain) IBOutlet UITabBarController *tabBarController; 

@end 
+0

沒關係,我忘了設定的委託 - 哎呀。 – mobibob

回答

15

您是否在您的UITabBarController與您的應用程序委託之間建立了連接?

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 
    ... 
    tabBarController.delegate = self; 
    ... 
} 
+0

是的 - 我忘了,你太快:))感謝超輕的反應速度。 – mobibob

+0

地獄,我試過了,這個解決方案並沒有工作。你們中的任何一個人可以幫忙嗎?我把我的代碼放在這裏:你好,我有一個類似的問題。我已經在這裏發佈我的代碼:http://stackoverflow.com/questions/10891182/iphone-how-to-implement-didselectvie wcontroller/10891264。 – John

0

定義添加以下tabBarController.delegate = self;,一切都很好。我希望這對他人有幫助。

- (void)applicationDidFinishLaunching:(UIApplication *)application { 

    // Add the tab bar controller's current view as a subview of the window 
    tabBarController.delegate = self; 
    [window addSubview:tabBarController.view]; 
} 
+0

我面臨同樣的問題,我確保我的代表設置爲: tabBarController.delegate = self; 但仍然沒有調用委託方法。 –

+0

檢查IB定義中的衝突。你在建設者中定義了什麼課程,並且它正確地連接到你的鱈魚? – mobibob

14

如果你的ViewController是UITabBarController,你需要設置自己,因爲它的委託,因爲你不能直接改變UITabBar的代表。

例如,在你的UITabBarController的viewDidLoad中:

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    self.delegate = self; 
} 
+0

你確定這是正確的方式嗎?因爲我面臨同樣的問題 – Maulik

+0

@Maulik它爲我工作。 – CedricSoubrie

+0

雅它的工作對我來說...其實我以前試過,然後搜索這個檢查是否正確的方式或不,我得到了你的答案,所以... – Maulik

相關問題