Ped*_*dro 15 uiviewcontroller ios uistoryboard segue uistoryboardsegue
我完全重新制定了这个问题,因为我知道我原本偏离轨道但是让我无法解决问题.参考这张图片......

我想要在代码中创建或操作segue(以黄色突出显示),以便主视图是MFMasterViewController(以红色突出显示)的多个子类中的任何一个.
做这个时使用笔尖我可以创建一个笔尖,SharedNib.xib和设置类的MFMasterViewController,然后创建我的子类,比方说MFMasterViewControllerSubclassA,MFMasterViewControllerSubclassB等和然后实例化我想要使用哪个子...
MFMasterViewControllerSubclassA *controller = [[MFMasterViewControllerSubclassA alloc] initWithNibName:@"SharedNib" bundle:nil];
Run Code Online (Sandbox Code Playgroud)
要么...
MFMasterViewControllerSubclassB *controller = [[MFMasterViewControllerSubclassB alloc] initWithNibName:@"SharedNib" bundle:nil];
Run Code Online (Sandbox Code Playgroud)
等等
关于如何使用故事板来解决这个问题的任何线索?
在我的情况下,想要这样做的原因是我的所有子类都是相同的tableview和数据,但排序方式不同,并且对于写入cels详细文本的内容有所不同.我怀疑这是一种并不罕见的模式.
干杯和TIA,佩德罗:)
这不是一个直接的答案,但这就是我根据你对原因的解释完成你想要的东西.
基本上你需要将UITableViewDataSource(也可能是委托)分开,MFMasterViewController因此当执行segue时,你可以在视图控制器中设置正确的dataSource和delegate.
因此,在导航控制器中,您需要实现该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];
}
}
Run Code Online (Sandbox Code Playgroud)
这样,您可以获得所需的自定义,而无需创建视图控制器的子类.
如果您可以访问WWDC视频,请查看会话#407在您的应用中采用故事板.
| 归档时间: |
|
| 查看次数: |
4747 次 |
| 最近记录: |