0

我有一个包含 UITabBarController 和 UINavigationController 的类(UITabBarController 的选项卡之一):

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

}

@property (retain, nonatomic) UIWindow *window;

@property (retain, nonatomic) UITabBarController *tabBarController;

@end

在 .m 文件(初始化方法)中,这是我正在尝试的方式,但它不起作用:

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

Maps 本身并不是一个 viewController,而是一个管理视图的容器对象。在某些时候,地图有一个或多个 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 回答