gpt4 book ai didi

ios - 如何在多个 UIViewController 之间共享一个 Storyboard场景

转载 作者:技术小花猫 更新时间:2023-10-29 10:10:00 25 4
gpt4 key购买 nike

我正在完全重新制定这个问题,因为我了解到我最初偏离了轨道,但我离解决问题还差得很远。引用这张图... storyboard illustration

我想在代码中创建或操作 segue(以黄色突出显示),以便主视图是 MFMasterViewController(以红色突出显示)的多个子类中的任何一个。

当使用 Nibs 执行此操作时,我可以创建一个 Nib,SharedNib.xib 并将类设置为 MFMasterViewController,然后创建我的子类,比如 MFMasterViewControllerSubclassA, MFMasterViewControllerSubclassB 等等 & 然后实例化我想使用的任何子类...

MFMasterViewControllerSubclassA *controller = [[MFMasterViewControllerSubclassA alloc] initWithNibName:@"SharedNib" bundle:nil];

或者...

MFMasterViewControllerSubclassB *controller = [[MFMasterViewControllerSubclassB alloc] initWithNibName:@"SharedNib" bundle:nil];

等等

关于我如何使用 Storyboard正确完成此操作的任何线索?

在我的例子中,想要这样做的原因是我所有的子类都是相同的 TableView 和数据,但排序不同,并且在写入 cels 的详细文本的内容上有一些差异。我怀疑这是一种并不少见的模式。

干杯 & TIA,佩德罗:)

最佳答案

这不是一个直接的答案,但这是我根据你对原因的解释来完成你想要的。

基本上,您需要将 UITableViewDataSource(可能还有委托(delegate))与 MFMasterViewController 分开,因此当执行 segue 时,您可以在 View Controller 。

所以在 Navigation Controller 中你需要实现 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];
}
}

这样你就可以得到你想要的自定义,而不需要创建你的 View Controller 的子类。

如果您可以访问 WWDC 视频,请查看 session #407 Adopting Storyboards in Your App。

关于ios - 如何在多个 UIViewController 之间共享一个 Storyboard场景,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12268888/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com