1

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

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

@interface NativeViewController : UINavigationController
{

}

现在考虑使用 initWithRootViewController: 方法的以下代码:

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课堂。

4

2 回答 2

2

第一个用于自定义UINavigationController。另一方面,第二个是用于初始化其中的UINavigationController第一个视图控制器。比方说,UINavigationController它本身只是导航UIViewControllers 的占位符。

你仍然应该rootViewControllerUINavigationController.

于 2013-03-11T07:38:59.540 回答
1

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

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

于 2013-03-11T07:28:16.860 回答