从Nib加载UINavigationController子类

我的情况如下:我的类SettingsViewControllerUINavigationController一个子类。 该类包含其rootViewController的逻辑。 例如,它充当该根视图控制器中两个表视图的委托和数据源。

我没有问题以编程方式进行设置。 在SettingsViewController的初始化程序中,我可以创建一个额外的UIViewController作为根视图控制器,在其视图中定位表视图,并将它们的委托和数据源设置为self

但我想通过一个Nib加载该根视图。 问题是,我不知道如何将该Nib与我的SettingsViewController连接,如何设置代理和数据源。 SettingsViewController不能从Nib中访问。 '文件所有者'表示根视图控制器,而不是SettingsViewController

如何从我的根视图控制器Nib中访问我的UINavigationController子类?

提前致谢。


你可以在你的笔尖里声明一个视图并设置类SettingsViewController (如果它是一个视图)。

或者在IB中拖动视图控制器并设置类类型SettingsViewController

//编辑:所以你想呈现一个像MFMailComposerViewController的视图。 我的应用程序中也有一个MessageViewController ,几乎相同:

MessageViewController *mView = [[MessageViewController alloc]initWithNibName:@"MessageView" bundle:nil];
mView.navController = [[UINavigationController alloc] initWithRootViewController:mView];
[masterView presentModalViewController:mView.navController animated:YES];
[mView release];

请注意, navController是一个UINavigationController ,它在IB中连接到导航控制器。


您将无法访问超出您的笔尖文件所有者的对象。 您需要从该笔尖加载视图后以编程方式设置这些属性; 您的rootViewController可以在其-viewDidLoad中设置其表的委托和数据源。

此外,我不得不问,你为什么继承UINavigationController。 类参考警告你“这个类不适用于子类。” 如果您只需要这个SettingsViewController,那么您的代理/数据源逻辑可能会有更好的地方。

链接地址: http://www.djcxy.com/p/87713.html

上一篇: Loading UINavigationController subclass from a Nib

下一篇: Order of UIViewController initialization and loading