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



考虑以下场景

我有一个原型小区,基于NSFetchedResultsControllertable view cells的数量将出现在table view controller中,比如小区a、B、C、D。

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

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

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

在Storyboard中,在目标视图控制器和充当表视图代理的视图控制器之间,将分段设置为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:中的具体情况取决于您在表视图中显示的数据的性质。

最新更新