为啥 self.navigationItem.backBarButtonItem 总是为零?
Posted
技术标签:
【中文标题】为啥 self.navigationItem.backBarButtonItem 总是为零?【英文标题】:Why is self.navigationItem.backBarButtonItem always nil?为什么 self.navigationItem.backBarButtonItem 总是为零? 【发布时间】:2011-08-03 21:05:35 【问题描述】:我将视图控制器推送到导航控制器上,如下所示:
[self.navigationController pushViewController:anotherViewController animated:YES];
然后,在 anotherViewController 中检查 self.navigationItem.BackBarButtonItem 和 LeftBarButtonItem,但它们始终为零。
我可以看到 backBarButtonItem,它似乎工作正常。
【问题讨论】:
确保您只尝试在viewDidAppear
.. 之后在viewWillAppear
/viewDidLoad
/init..
中读取backBarButtonItem
等,导航控制器还没有设置后退按钮,因为视图尚未完全推送到导航堆栈上。
【参考方案1】:
来自文档: “当该项是导航栏的后一项时——当它是顶部项下的下一项时——它可以表示为导航栏上的后退按钮。使用此属性来指定后退按钮。目标和动作您设置的后退栏按钮项的值应为 nil。默认值为显示导航项标题的栏按钮项。"
我的意思是它始终为 nil 是惯例,并且默认值始终为 nil。
这里讨论了关于 self.navigationItem.backBarButtonItem 为 nil 的类似主题: Changing the UIBackButtonItem title
【讨论】:
我认为这是正确的。如果我手动坐下,backbarbuttonitem 不会为零。我正在检查后退按钮是否存在,因为如果它在那里,我不想用另一个按钮覆盖它。如果我在更多视图控制器中,我最终测试了标签栏的选定索引。以上是关于为啥 self.navigationItem.backBarButtonItem 总是为零?的主要内容,如果未能解决你的问题,请参考以下文章
为啥 DataGridView 上的 DoubleBuffered 属性默认为 false,为啥它受到保护?