2012-04-11 61 views
3

中的UINavigationController的toolbar属性的文件说:为什么我不应该修改UINavigationController的工具栏?

此属性包含一个参考内置工具栏由导航控制器管理。访问此工具栏仅供希望从工具栏中显示操作表的客户端提供。您不应该直接修改UIToolbar对象。

我可以理解为什么我不应该修改工具栏的可见性或项目,因为UINavigationController提供了一个接口来做到这一点。但是我添加了一个按钮,当点击时,会使工具栏在屏幕外动画。为什么我不应该这样做?

我必须代替创建复制一切UINavigationController的使用工具栏只是草皮,我可以做我想做的使用工具栏做我自己ToolbarNavigationController类?当UINavigationController已经做我想做的事情时,似乎浪费精力。为什么这些文件表明我严重限制了我对它的处理?

+0

UINavigationControllers对其暴露的属性非常挑剔。我不认为你可能会找到一个好的答案,这不是在这里推测。 – CodaFi 2012-04-11 04:32:18

+0

@CodaFi虽然这不会让我感到意外,但它并没有提供太多的满足感。 :-(谁知道,也许有人真的知道! – theory 2012-04-11 04:34:33

+0

如果你可以访问它并修改它,你会怎么做?(PS,可能有一些关闭的苹果员工在这方面的知识,但我不认为他们'd愿意轻易地放弃它; p) – CodaFi 2012-04-11 04:36:36

回答

2

三种方式已经移动的导航栏可能混淆:

  1. 如果您的应用程序可以旋转,它留在旋转后的正确的地方?当它返回到屏幕时,它是否从正确的位置开始动画?
  2. 如果你显示一个搜索栏,导航栏动画自行关闭。如果它已被手动移动,它是否知道它在哪里?
  3. 如果您将viewControllerhidesBottomBarWhenPushed设置为YES,并返回,navigationController是否将其工具栏放回其所属的位置?

另一方面,如何调用UINavigationController setNavigationBarHidden:NO animated:YES - 这是做你想做的,而让导航控制器保持其工具栏的控制?

编辑:对不起误读。是的,你可能可以做你想问的事情,只要你不做任何事情(如上面的第3项),这意味着navigationController移动它的工具栏。

在另一方面,你想也可以实现的行为如下:

  1. 对于viewController与多个工具栏,设置其hidesBottomBarWhenPushedYES
  2. 地点全部viewController需要的工具栏,并让它完全控制它们的位置和可视性。

如果默认的工具栏上有布局的navigationController的自己的工具栏一样,这将创造看到一组相同的工具栏项目的奇视觉效果滑落,然后再次打开,但一切应工作。

+0

这不是我想要的导航栏(我的应用程序隐藏了它,根本没有使用它)。这是工具栏。不,['-setToolbarHidden:animated'](http://developer.apple.com/library/ios/#documentation/uikit/reference/UINavigationController_Class/Reference/Reference.html#//apple_ref/occ/instm/UINavigationController/setNavigationBarHidden:animated :)没有做我想做的事,因为它调整了当前显示的视图。 – theory 2012-04-11 16:51:14

+0

@Theory:哎呀。请参阅编辑。 – Dondragmer 2012-04-11 23:17:17

+0

谢谢。是的,但是因为我打算做的其他事情之一是改变推动和弹出动画,所以我不妨写我自己的ToolbarNavigationController。 (我实际上[已经开始](https://github.com/lunar-theory/LTToolbarNavController)。)但现在看来,动画UINavigationController工具栏,所以可能暂时坚持它。正如你所说(和@CodaFi似乎同意),它可能不会造成任何伤害。 – theory 2012-04-12 04:11:11

0

UIToolbar无法访问,因为它不需要可访问。它响应+外观就好了。就你而言,你可以访问只读变量的属性(查看CGRect!)。如果您需要使UIToolbar或UINavigatiomBar脱离屏幕动画,请将它的frame.center属性设置为等于UIView动画块中的CGPointMake。

+0

我确实。我改变了框架)我的问题是:为什么我不应该? – theory 2012-04-11 05:02:42

+0

你应该,我现在就做它 – CodaFi 2012-04-11 22:02:57

+0

你在哪里改变工具栏的框架?它仍然在iOS 8中工作干净吗? – SAHM 2014-11-28 04:02:41

相关问题