UINavigationItem titleView“如果设置了leftBarButtonItem则忽略”?

时间:2012-03-13 19:05:39

标签: iphone uinavigationcontroller uikit uinavigationbar uinavigationitem

UINavigationItem的titleView属性says的文档:

  

“如果leftBarButtonItem不是nil,则忽略此属性。”

但是,我在测试中设置了titleViewleftBarButtonItem属性,它们看起来都很好。我已经在我的Xcode中测试了所有模拟器:4.3,5.0和5.1。有没有人知道文档是错误的,还是在某些我无法测试的旧版本(例如4.2,3.x)上是否正确?

5 个答案:

答案 0 :(得分:8)

检查属性leftBarButtonItems的文档,它说:

  

如果没有足够的空间来显示阵列中的所有项目,   那些重叠标题视图(如果存在)或按钮的那些   在栏的右侧不显示。

所以,titleView的内容可能不正确。

答案 1 :(得分:3)

我认为文档错误,您应该提交错误报告。

答案 2 :(得分:0)

我在iOS6.1和iOS7上测试了这个。我的UINavigationItem有一个非零的titleView和leftBarButtonItem,并且titleView和leftBarButtonItem都是可见的。我提交了一个雷达。

答案 3 :(得分:0)

我也遇到过这种情况。在我的具体问题中,将出现titleview和leftbar项目。但是,如果我有一个后退按钮,那么我的标题视图将在Push上消失并使用默认标题。如果我在左侧设置了自定义uibuttonitem,它可以正常工作。所以它似乎与后退按钮有关。我最终通过设置标题属性而没有进行自定义视图来解决。

答案 4 :(得分:-1)

我刚刚碰到这个并发现了你做的同样的事情。我还注意到UINavigationItem的文档最后一次更新是在2011年,而UINavigationBar在iOS 5和6中都有更新,因此自上次更新UINavigationItem文档以来,这种行为可能会发生变化。

虽然很混乱。

在UINavigationController的参考文献中也注意到了这一点:

  

“导航控制器更新导航栏的中间位置,如下所示:

     

...

     

如果新的顶级视图控制器具有自定义标题视图,则导航栏将显示该视图以代替默认标题视图。要指定自定义标题视图,请设置视图控制器导航项的titleView属性。“

因为只要你在非root视图中有一个leftBarByButton(后退按钮),它肯定在UINavigationItem的文档中是错误的