我的情况如下:我的班级SettingsViewController
是UINavigationController
的子类。该类包含其rootViewController
的逻辑。例如,它充当该根视图控制器中两个表视图的委托和数据源。
我以编程方式设置它没有问题。在SettingsViewController
的初始值设定项中,我可以创建一个额外的UIViewController
作为根视图控制器,将表视图放在其视图中,并将其委托和数据源设置为self
。
但我想通过Nib加载该根视图。问题是,我不知道如何将Nib与我的SettingsViewController
连接起来,如何设置委托和数据源。无法从Nib中访问SettingsViewController
。 “文件所有者”代表根视图控制器,而不是SettingsViewController
。
如何从我的根视图控制器Nib中访问我的UINavigationController子类?
提前致谢。
答案 0 :(得分:2)
你可以在你的笔尖内声明一个视图并设置类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中连接到导航控制器。
答案 1 :(得分:1)
您将无法访问笔尖中文件所有者之外的对象。从该笔尖加载视图后,您需要以编程方式设置这些属性;您的rootViewController可以在其-viewDidLoad中设置其表的委托和数据源。
另外我要问,你为什么要继承UINavigationController。类引用警告您“此类不用于子类化”。如果只需要这个SettingsViewController,那么你的委托/数据源逻辑可能会有一个更好的地方。