0

UITabBarController と UINavigationController (UITabBarController のタブの 1 つ) を含むクラスがあります。

 @interface HomeController : NSObject{
UINavigationController *maps;
UIBarButtonItem* national;

}

@property (retain, nonatomic) UIWindow *window;

@property (retain, nonatomic) UITabBarController *tabBarController;

@end

.m ファイル (init メソッド) で、これは私が試している方法ですが、機能しません:

self.tabBarController.viewControllers = [NSArray arrayWithObjects:adminController, maps, sitesController, nil];

国別ボタンを UINavigationController *maps の rightBarButtonItem として配置したいので、init メソッド (.m ファイル) にその行を挿入します。

 national= [[UIBarButtonItem alloc] initWithTitle:@"national" style:UIBarButtonItemStyleDone target:nil action:nil];
    maps.navigationItem.rightBarButtonItem = national;
    [national release];

私のクラスはviewDidLoadメソッドにそのコードを挿入するビュー(NSObjectのサブ)ではないためです。

4

1 に答える 1

0

マップはそれ自体がviewControllerではなく、ビューを管理するコンテナオブジェクトです。ある時点で、マップには1つ以上のviewControllerがあります。常にrootViewControllerが必要です。だからこれを試してみてください:

...create and initialize maps
UIViewController *firstView = maps.rootViewController;
firstView.view; // force it to load its view, may or may not be necessary
firstView.navigationItem.rightBarButtonItem = national;
于 2012-08-15T16:30:10.907 に答える