继承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
类。
答案 0 :(得分:2)
首先是自定义UINavigationController
。
另一方面,第二个用于初始化UINavigationController
,其中包含第一个viewcontroller。
简而言之,UINavigationController
本身只是用于导航UIViewController
的占位符。
如果继承rootViewController
,您仍然应该UINavigationController
。
答案 1 :(得分:1)
仅在需要控制UIAppearance或委托方法未提供的容器功能或外观的情况下,才对容器(UINavigationController,UITabBarController)进行子类化。
在所有其他情况下(将占多数),您将设置根视图控制器或viewControllers属性。您不需要子类来提供基本功能。这些是容器 - 您的大部分UI都来自子视图控制器。