【问题标题】: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 视图控制器时分别。

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

【问题讨论】:

  • 反对票有什么特别的原因吗??

标签: ios objective-c uitableview storyboard


【解决方案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: 中究竟发生了什么取决于您在表格视图中显示的数据的性质。

【讨论】:

  • 感谢您的快速回复,我将实施上述方法并与您联系。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-02-06
  • 2014-11-13
  • 1970-01-01
  • 1970-01-01
  • 2017-12-01
  • 1970-01-01
相关资源
最近更新 更多