ios – 如何在多个UIViewControllers之间共享一个故事板场景

前端之家收集整理的这篇文章主要介绍了ios – 如何在多个UIViewControllers之间共享一个故事板场景前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我完全重新制定了这个问题,了解到我最初离线,但让我没有更多的解决问题.参考这个图像…

我想要在代码中创建或操作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在您的应用程序中采用故事板.

猜你在找的iOS相关文章