将两个视图控制器连接到单个原型单元

时间:2015-10-29 07:11:32

标签: ios objective-c uitableview storyboard

考虑以下情况

我有一个原型单元格,基于NSFetchedResultsController table view cells的数量将显示在table view controller单元格A,B,C,D中。

基于tableviewcell的内容,我需要将segue推送到不同的view controllers,就像用户点击cells A,B,C,D到E,F一样,G,H视图控制器。

设计此方案的标准方法是什么?

1 个答案:

答案 0 :(得分:1)

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

在目标视图控制器和作为表视图代理的视图控制器之间将故事板中的segue设置为manual,并为它们提供适当的标识符(例如" segueE&# 34;," 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:中究竟发生了什么,取决于您在表格视图中显示的数据的性质。