子类化UINavigationController的步骤

时间:2010-06-12 20:15:22

标签: iphone uinavigationcontroller customization

我想继承UINavigationController以获得更多关于控制器外观的自由。

我有一些图形用于不同的部分,条形图,按钮,文字等。 看看UINavigationController头文件我得到的帮助不大,我不知道从哪里开始。

我以前从未对UIKit组件进行子类化/覆盖,看起来有点像扮演夏洛克·福尔摩斯。

方法是什么?

我如何知道要覆盖什么才能将特定的图形“注入”正确的位置?

我是否需要继承UINavigationBar,UIBarButtonItem等子类以获得完整的自定义外观?

我如何知道Apple批准某些事项是否有限制?

希望有人可以指出我正确的方向,我只能找到更改控制器的小部分的示例,而不是通过子类化完全自定义。 我是以错误的方式解决这个问题吗?

感谢:)

2 个答案:

答案 0 :(得分:52)

现在您可以继承UINavigationController的子类,请参阅更新的文档:

  

UINavigationController类实现了一个专门的视图控制器,用于管理分层内容的导航。此导航界面可以有效地呈现您的数据,并使用户更容易浏览该内容。此类通常按原样使用,但可以在iOS 6及更高版本中进行子类化。

UINavigationController Class Reference

答案 1 :(得分:8)

您不应该扩展UINavigationController。

从iOS 6开始,此信息已过时。来自Xcode 5文档: 您通常按原样使用此类,但在iOS 6及更高版本中,您可以继承自定义类行为。

原始过时的信息如下:

来自文档:

  

UINavigationController类实现了一个专门的视图控制器,用于管理分层内容的导航。此类不适用于子类。相反,在希望应用程序的用户界面反映内容的层次结构特性的情况下,可以按原样使用它的实例。

您可能需要考虑创建类别或子类化UINavigationBar,并可能创建用于创建UIBarButtonItems的自定义UIButtons。

每当你处理从UIView扩展的UI组件时,你应该考虑做的是子类化和重写

- (void)drawRect:(CGRect)rect

stackoverflow或Apple的官方文档站点上有很多示例。