2

我目前有一个UINavigationController的子类,它具有以下viewDidLoad函数。UINavigationController子类navigationItem忽略-setLeftBarButtonItem

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    UIBarButtonItem *leftButton = [[UIBarButtonItem alloc] initWithTitle:@"HI" 
                    style:UIBarButtonItemStylePlain 
                    target:self 
                    action:@selector(manage)]; 
    [self.navigationItem setLeftBarButtonItem:leftButton]; 

    [self.navigationBar setBackgroundImage:[[UIImage imageNamed:@"top_nav_bg.png"] stretchableImageWithLeftCapWidth:3.0 topCapHeight:0.0] forBarMetrics:UIBarMetricsDefault]; 

} 

即UINavigationController的亚类是在一个子类UITabBarBarController具有以下viewDidLoad中的选项卡之一。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Change some of the look of the main tab bar 
    [self.tabBar setBackgroundImage:[[UIImage imageNamed:@"tab_nav_bg.png"] stretchableImageWithLeftCapWidth:2.0 topCapHeight:0.0]]; 
    [self.tabBar setSelectionIndicatorImage:[[UIImage imageNamed:@"tab_nav_bg_active.png"] stretchableImageWithLeftCapWidth:2.0 topCapHeight:0.0]]; 

    // Load the various view controllers for this view 
    SBHomeViewController *homeViewController = [[SBHomeViewController alloc] init]; 
    [homeViewController.tabBarItem setFinishedSelectedImage:[UIImage imageNamed:@"tab_home_active.png"] withFinishedUnselectedImage:[UIImage imageNamed:@"tab_home.png"]]; 
    [homeViewController.tabBarItem setImageInsets:UIEdgeInsetsMake(5.0, 0.0, -5.0, 0.0)]; 

    // The navigation controller that will hold the home view 
    SBMainNavigationViewController *homeNavController = [[SBMainNavigationViewController alloc] initWithRootViewController:homeViewController]; 

    self.viewControllers = @[homeNavController]; 
} 

一切看似工作正常。正在加载来自UINavigationController viewDidLoad的正确的导航栏背景imiage。但是,leftBarButtontem根本没有被设置。对于它的价值,我尝试将它作为正确的BarButtonItem,但这也不起作用。

想法?

回答

6

导航控制器是其他视图的容器和导航栏的主机。但是,它从来不是导航堆栈的一部分。只有作为堆栈一部分的视图控制器才会对条形按钮项目产生影响。

将栏按钮项目设置到导航控制器导航项目上,而不是将其设置到根视图控制器导航项目上。

+0

良好的通话。我以为我尝试过......无论如何,我将UITabBarController移到了UINavigationController中,而不是反之亦然,因为这样做更有意义。 – joshholat 2013-04-22 22:57:57