0


私は自分のアプリケーションでTabBarControllerを持っています。その中にいくつかのNavigationControllerがあります。私はインターフェイスビルダーで作られたすべてのものを持っています。
は今、私はので、私はクラスを作成し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 

およびインターフェイスビルダーで、私は私が欲しいナビゲーションコントローラにカスタムクラスとしてこのクラスを追加
。今私は、アプリケーションを起動し、このナビゲーションコントローラでタブを選択すると動作しますが、initWithRootControllerは呼び出されません。私はそれがクラスを完全に無視しており、デフォルトのナビゲーションコントローラとして動作していると思います。
インターフェイスビルダで何かを指定する必要があるのですか、このコントローラをプログラムによってタブバーデリゲートのどこかに指定する必要がありますか?
ありがとうございます。

答えて

1

インタフェースビルダーでナビゲーションコントローラを作成する場合は、initWithRootViewController:ではなく、initWithCoder:を上書きする必要があります。 xibにはオブジェクトのインスタンス化されたバージョンが含まれており、ルートビューコントローラはすでに設定されています。

関連する問題