继承UINavigationController类和分配rootViewController之间的区别

时间:2013-03-11 07:19:03

标签: iphone ios objective-c uinavigationcontroller uitabbarcontroller

继承UINavigationController类和分配rootViewController属性(或使用initWithRootViewController:方法)有什么区别???

我对此有点困惑。考虑下面的UINavigationController的代码继承:

@interface NativeViewController : UINavigationController
{

}

现在使用initWithRootViewController:method:

考虑下面的代码
UINavigationController *viewController = nil;
if (self) {
    NativeViewController *vc = [[NativeViewController alloc] initWithNibName:@"NativeViewController" bundle:nil];
    viewController = [[UINavigationController alloc] initWithRootViewController:vc];
    [vc autorelease];
}
return viewController;

何时使用继承,如第一种情况以及何时使用initWithRootViewController:方法??

继承情况下rootViewController属性会发生什么?

同样的问题是UITabbarController类。

2 个答案:

答案 0 :(得分:2)

首先是自定义UINavigationController。 另一方面,第二个用于初始化UINavigationController,其中包含第一个viewcontroller。 简而言之,UINavigationController本身只是用于导航UIViewController的占位符。

如果继承rootViewController,您仍然应该UINavigationController

答案 1 :(得分:1)

仅在需要控制UIAppearance或委托方法未提供的容器功能或外观的情况下,才对容器(UINavigationController,UITabBarController)进行子类化。

在所有其他情况下(将占多数),您将设置根视图控制器或viewControllers属性。您不需要子类来提供基本功能。这些是容器 - 您的大部分UI都来自子视图控制器。

相关问题