我完全重新制定了这个问题,了解到我最初离线,但让我没有更多的解决问题.参考这个图像…
我想要在代码中创建或操作segue(以黄色突出显示),以便Master视图是MFMasterViewController的多个子类(红色突出显示)中的任何一个.
当使用Nibs进行此操作时,我可以创建一个Nib,SharedNib.xib&将类设置为MFMasterViewController,然后创建我的子类,说MFMasterViewControllerSubclassA,MFMasterViewControllerSubclassB等.然后实例化我想要使用的子类
MFMasterViewControllerSubclassA *controller = [[MFMasterViewControllerSubclassA alloc] initWithNibName:@"SharedNib" bundle:nil];
要么…
MFMasterViewControllerSubclassB *controller = [[MFMasterViewControllerSubclassB alloc] initWithNibName:@"SharedNib" bundle:nil];
等等
关于我如何使用故事板获得这个权利的任何线索?
在我的情况下,想要这样做的原因是我所有的子类都是相同的tableview&数据但排序不同&在写入电子邮件的详细文本中有一些区别.我怀疑这是一个不常见的模式.
干杯& TIA,
佩德罗:)
解决方法
这不是一个直接的答案,而是根据你对原因的解释,我将如何完成你想要的.
基本上你需要从MFMasterViewController分离UITableViewDataSource(也可能是委托),所以当执行segue时,你可以在视图控制器中设置正确的dataSource和委派.
所以在导航控制器中你需要实现prepareForSegue:sender:方法.这是您可以在执行之前自定义segue的位置:
- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { // you can set the segue identifier using Interface Builder // also it is a good thing to make sure which segue you're using if (([segue identifier] isEqualToString:@"TheId"]) { id<UITableViewDataSource> dataSource = [[TableViewDataSourceImplementationA alloc] init]; [[[segue destinationViewController] tableView] setDataSource:dataSource]; } }
这样,您可以获得所需的自定义,而无需创建视图控制器的子类.
如果您有访问WWDC视频,请查看会话#407在您的应用程序中采用故事板.