0


我在我的應用程序中有一個TabBarController,並且在其中我有幾個NavigationControllers。我已經在界面生成器中製作了所有這些東西。
現在我要實現我的自定義navigationcontroller所以我創建了一個類:
自定義UINavigationController實現

#import <UIKit/UIKit.h> 

@interface DetailNavigationController : UINavigationController 

@end 


@implementation DetailNavigationController 

- (id)initWithRootViewController:(UIViewController *)rootViewController 
{ 
    self = [super initWithRootViewController:rootViewController]; 
    if (self) { 
     NSLog(@"I work!"); 
    } 

    return self; 
} 

- (void) dealloc { 
    [super dealloc]; 
} 

@end 

而且在Interface Builder我加入這個類的自定義類的導航控制器我想要的。現在,當我啓動應用程序並選擇帶有此導航控制器的選項卡時,它可以工作,但不調用initWithRootController。我想這完全忽略了這個類,並作爲默認的導航控制器運行。
我是否需要在界面構建器中指定更多內容,或者是否需要在tabbar委託中以編程方式指定此控制器?
謝謝。

回答

1

如果要在界面構建器中創建導航控制器,則需要覆蓋initWithCoder:而不是initWithRootViewController:。 xib包含您的對象的實例化版本,並且已經設置了根視圖控制器。