2013-05-06 70 views
0

当我尝试使用下面的代码以自定义在UINavigationBar的项目更改UINavigationBar的项目:遍历导航层次

CGSize size = [UIImage imageNamed:kGlobalNavigationBarButtonBackOrange].size; 
    UIButton *backButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, size.width, size.height)]; 
    [backButton setImage:[UIImage imageNamed:kGlobalNavigationBarButtonBackOrange] forState:UIControlStateNormal]; 
    [backButton setImage:[UIImage imageNamed:kGlobalNavigationBarButtonBackPressedOrange] forState:UIControlStateHighlighted]; 
    [backButton addTarget:self action:@selector(dismissViewController) forControlEvents:UIControlEventTouchUpInside]; 
    UIBarButtonItem *barButton = [[UIBarButtonItem alloc] initWithCustomView:backButton]; 

    UINavigationItem *item = [[UINavigationItem alloc] initWithTitle:@"Detail"]; 
    [item setLeftBarButtonItem:barButton]; 
    [item setTitleView:self.navigationItem.titleView]; 

    [self.navigationBar pushNavigationItem:item animated:YES]; 
    [self.navigationController pushViewController:vc animated:YES]; 

然而,当我运行此,导航栏不看任何不同。

回答

1

您要做的事应该从您的vc视图控制器中完成。总而言之,当一个新的视图控制器被推入堆栈时,系统会询问它的导航项目,并用于更新导航栏。

在您的视图控制器的- viewDidLoad中,创建条形按钮并将其设置为self. navigationItem. leftBarButtonItem

您不需要创建新的导航项目或将任何导航项目推送到导航栏上。让视图控制器框架为你做这个。