我正在构建一个将由其他iPhone开发人员使用的iPhone SDK。
此SDK的主要用途是提供一个用户界面,使用户能够完成某个过程。
此UI应包含在UINavigationController中,因为它由构成该进程的多个UIViewController组成。
我希望使用我的SDK的开发人员将初始化我的自定义UINavigationController,然后根据需要显示它。
我想强制我的自定义导航控制器的rootViewController将是SDK中的特定ViewController,开发人员将无法使用不同的rootViewController初始化它。
实现此目的的推荐方法是什么?
答案 0 :(得分:2)
您不应该像Apple doc。中所写的那样继承UINavigationController
。
此类不适用于子类。相反,您使用实例 在你想要你的应用程序的用户的情况下 界面,以反映您的内容的层次性。
如果是iOS 5,请使用UIViewController
s。
Implementing a Container View Controller
使用这种方法,您可以强制执行根控制器并将其隐藏给用户。
如果iOS 5不可用,请参阅我之前的答案Handle different view controllers within an application: creating Custom Content View Controllers。
希望有所帮助。
答案 1 :(得分:1)
您可以编写一个类方法来实例化视图控制器:
+(MyViewController*)myViewController {
MyViewController* = myViewController = [[MyViewController* alloc] init];
myViewController.rootViewController = [[MyDesiredRootViewController alloc] init];
return myViewController;
}
开发人员不如使用此方法来初始化视图控制器,并且将隐藏所有初始化工作。
答案 2 :(得分:0)
- (id)initWithRootViewController:(UIViewController*)rootController
{
if(![rootController isKindOfClass:[YourRootViewController class]])
return nil;
//Do default init stuff
}