将 leftBarButtonItem 添加到导航栏的问题

Posted

技术标签:

【中文标题】将 leftBarButtonItem 添加到导航栏的问题【英文标题】:issue adding a leftBarButtonItem to nav bar 【发布时间】:2012-04-30 22:16:23 【问题描述】:

我有一个 UINavigationController,我的 AHViewController 作为根视图控制器。

然后我尝试从 AHViewController 的 viewDidLoad 中添加一个左栏按钮项:

UIButton * backButton = [UIButton buttonWithType:UIButtonTypeCustom];
    [backButton addTarget:self action:@selector(backButtonPressed) forControlEvents:UIControlEventTouchUpInside];
    [backButton setImage:[UIImage imageNamed:@"grid.png"] forState:UIControlStateNormal];
    UIBarButtonItem *backButtonBarItem = [[UIBarButtonItem alloc] initWithCustomView:backButton];
    //[self.navigationItem setLeftBarButtonItem:backButtonBarItem];
    [self.navigationController.navigationItem setLeftBarButtonItem:backButtonBarItem];
    [backButtonBarItem release];

但是,我什么也没看到。这是为什么呢?

【问题讨论】:

【参考方案1】:

代替:

[self.navigationController.navigationItem setLeftBarButtonItem:backButtonBarItem];

这样做:

[self.navigationItem setLeftBarButtonItem:backButtonBarItem];

UINavigationController 使用顶视图控制器的 navigationItem,而不是它的(UINavigationController 的)导航项属性。

【讨论】:

@adit 尝试使用 -initWithTitle:style:target:action: 制作一个简单的 UIBarButtonItem,看看是否可以让它以这种方式出现。如果这可行,则问题是使用 UIButton 作为栏按钮项的自定义视图,或者您设置 UIButton 的方式存在问题。【参考方案2】:

感谢“Simon Golden”为我解答工作。

之前:(这不会显示我的按钮)

self.navigationItem.LeftBarButtonItem: backButtonItem;

之后:(This Work for me 和按钮出现)

[self.navigationItem setLeftBarButtonItem: backButtonItem];

如果 StoryBoard 在 ViewController 中没有 LeftBarButtonItem 和 RightBarButtonItem,我们必须设置 Button(setLeft/RightBarButtonItem)。

否则只需简单更改Item的属性(self.navigationItem.Left/RightBarButtonItem)

【讨论】:

以上是关于将 leftBarButtonItem 添加到导航栏的问题的主要内容,如果未能解决你的问题,请参考以下文章

[iOS类别的使用]---导航栏leftBarButtonItem图标修改

导航左栏按钮项作为图像徽标

iOS 导航栏-返回按钮-自定义

iOS中导航栏布局的项目太多

使用LeftBarButtonItems ios中的自定义按钮创建默认后退按钮

向导航栏项添加文本