【问题标题】:UINavigationItem titleView "ignored if leftBarButtonItem is set"?UINavigationItem titleView“如果设置了leftBarButtonItem则忽略”?
【发布时间】:2012-03-30 05:31:34
【问题描述】:
UINavigationItem 的titleView 属性says 的文档:
"如果leftBarButtonItem 不为零,则忽略此属性。"
但是,我在测试中设置了 titleView 和 leftBarButtonItem 属性,它们看起来都很好。我已经在我的 Xcode 中的所有模拟器上进行了测试:4.3、5.0 和 5.1。有谁知道文档是错误的,还是在我无法测试的某些旧版本(例如 4.2、3.x)上正确?
【问题讨论】:
标签:
iphone
uinavigationcontroller
uikit
uinavigationbar
uinavigationitem
【解决方案1】:
查看属性leftBarButtonItems 的文档,它说:
如果没有足够的空间来显示数组中的所有项目,
那些会重叠标题视图(如果存在)或按钮
右侧的栏不显示。
所以,titleView 的说法可能不正确。
【解决方案3】:
我在 iOS6.1 和 iOS7 上对此进行了测试。我的 UINavigationItem 有一个非零 titleView 和 leftBarButtonItem,并且 titleView 和 leftBarButtonItem 都是可见的。我提交了一个雷达。
【解决方案4】:
我也遇到过这种情况。在我的具体问题中,titleview 和 leftbar 项目都会出现。但是,如果我有一个后退按钮,那么我的标题视图将在 Push 上消失并使用默认标题。如果我为左侧设置了自定义 uibuttonitem,它可以正常工作。所以它似乎与后退按钮有关。我最终通过设置标题属性而不做自定义视图来解决。
【解决方案5】:
我刚遇到这个,发现和你做的一样。我还注意到 UINavigationItem 的文档最后一次更新是在 2011 年,而 UINavigationBar 在 iOS 5 和 6 中都有更新,因此自上次更新 UINavigationItem 文档以来,这种行为可能发生了变化。
虽然很混乱。
在 UINavigationController 的参考资料中也注意到了这一点:
"导航控制器更新导航栏中间如下:
...
如果新的顶级视图控制器具有自定义标题视图,导航栏会显示该视图以代替默认标题视图。要指定自定义标题视图,请设置视图控制器导航项的 titleView 属性。”
由于在您处于非根视图的任何时候都有一个 leftBarByButton(后退按钮),因此 UINavigationItem 的文档中似乎有一个错误