2012-06-25 85 views
4

有沒有解決方法沒有收到NavBarDelegate回調?我試圖在一個測試項目,只是做:沒有收到UINavigationBarDelegate回調

[self.navigationController.navigationBar setDelegate:self]; 

在viewDidLoad中,我確實收到了回調:

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item { 
    NSLog(@"%s", __FUNCTION__); 
    return YES; 
} 
- (void)navigationBar:(UINavigationBar *)navigationBar didPushItem:(UINavigationItem *)item { 
    NSLog(@"%s", __FUNCTION__);  
} 

- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPopItem:(UINavigationItem *)item { 
    NSLog(@"%s", __FUNCTION__); 
    return YES; 
} 
- (void)navigationBar:(UINavigationBar *)navigationBar didPopItem:(UINavigationItem *)item { 
    NSLog(@"%s", __FUNCTION__); 
} 

我沒有檢查我的ViewController符合本協議的接口。

在viewWillAppear中:,檢查我的類符合協議與:

if ([self conformsToProtocol:@protocol(UINavigationBarDelegate)]) { 
     NSLog(@"yes I conform"); 
    } 

而且我得到了的NSLog消息說我的課符合,但我不明白的回調。由於它在測試項目中運行,並且在此不起作用,所以我正在嘗試找出其他解決此問題的方法。有什麼想法嗎?謝謝。

+0

你是否推動或彈出任何物品? –

+0

你提到的'這裏'在哪裏? – Alexander

+0

@Paul de Lange是的,我喜歡在我的測試項目中按下並彈出。我的測試項目獲得回調,但我的真實項目沒有。 – Crystal

回答

4

我離開這爲未來的人誰都會遇到這樣的問題:

你需要這些<UINavigationBarDelegate> protocol methods把你的導航控制器類裏面,不是一個視圖控制器的類中,你正在努力。

在我的情況下,我只是有一個類NavigationController(UINavigationController的子類),其中的單例實例:sharedNavigationController適用於我的整個應用程序。我已將其設置爲符合<UINavigationBarDelegate> protocol並在其中聲明瞭這些方法。從那以後,一切運行良好。