将两个视图控制器附加到单个原型单元

Posted

技术标签:

【中文标题】将两个视图控制器附加到单个原型单元【英文标题】:Attach two view controllers to a single prototype cell 【发布时间】:2015-10-29 07:11:31 【问题描述】:

考虑以下场景

我有一个原型单元格,基于NSFetchedResultsControllertable view cells 的数量将出现在table view controller 中,例如单元格 A、B、C、D。

基于tableviewcell 的内容,我需要将segue 推送到不同的view controllers,例如当用户点击cells A、B、C、D 到E、F、G、H 视图控制器时分别。

设计这个场景的标准方法是什么?

【问题讨论】:

反对票有什么特别的原因吗?? 【参考方案1】:

与大多数复杂场景一样,我认为没有一种普遍接受的标准解决方案。一种(我认为)实现这种行为的干净方法可能如下所示:

在 Storyboard 中将目标视图控制器和充当表视图代理的视图控制器之间的 segue 设置为 manual,并为它们提供适当的标识符(例如“segueE”、“segueF”、“segueG”、 “segueH”)。然后,在拥有您的表格视图的视图控制器中,创建一个封装单元格内容和目标视图控制器之间映射的方法,并实现 didSelectRowAtIndexPath: 委托方法,如下所示:

// Returns "segueE", "segueF", "segueG" or "segueH"
- (NSString *) segueIdentifierForIndexPath:(NSIndexPath *)indexPath 
    // your mapping logic


- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
    NSString *segueIdentifier = [self segueIdentifierForIndexPath: indexPath];
    [self performSegueWithIdentifier:segueIdentifier sender:self];

当然,segueIdentifierForIndexPath: 中究竟发生了什么取决于您在表格视图中显示的数据的性质。

【讨论】:

感谢您的快速回复,我将实施上述方法并与您联系。

以上是关于将两个视图控制器附加到单个原型单元的主要内容,如果未能解决你的问题,请参考以下文章

将原型单元连接到视图控制器 [Swift 4]

如何将两个图像附加到 ios 中的 mfmailcomposer 视图控制器

我想在单个表格视图中使用来自 nib 的两个不同的自定义单元格。两个原型电池具有不同的高度

向 iOS 故事板添加比视图控制器尺寸更多的原型单元格?

原型单元 - 第一个没有内容视图的单元

从 Xib 加载原型单元