【问题标题】:Segue from UITableViewCell to ViewController not working从 UITableViewCell 到 ViewController 不工作
【发布时间】:2015-09-18 03:19:00
【问题描述】:

我在UITableViewCellUIViewController 之间设置了一个segue。我的理解是,如果我设置从原型单元到UIViewController 的 Show segue,当点击我的UITableView 中的一个单元时,将显示UIViewController,但这对我来说不会发生。让它工作的唯一方法是覆盖tableViewdidSelectRowAtIndexPath,然后调用performSegueWithIdentifier

为了测试这一点,我用UITableViewControllerUIViewController 组合了一个快速项目。当我在原型单元格和UIViewController 之间创建一个segue 时,它​​按应有的方式工作。所以我知道这是可能的,我只是不确定是什么导致了我的实际项目中的问题。

没有太多代码可以显示。我的原型单元格是一个来自 xib 文件的自定义单元格,但我也尝试给它一个 UITableViewCell 类,它没有任何区别。

有没有人遇到过这样的情况,这样的转场应该有效,但没有?如果是这样,您是如何解决的?

【问题讨论】:

  • 从 Tableview 连接 segue
  • 如果您的单元格是从 xib 文件实例化的,那么您没有在情节提要中使用原型单元格。然后你根本没有从单元格链接的segues,因为xib文件中没有segues。所以,我想我在你的帖子中失去了一些东西。
  • 感谢您的评论。这是关键。即使我将单元格类改回 UITableViewCell,我仍在注册笔尖。这使得我不得不使用 performSegueWithIdentifier。

标签: ios swift uitableview segue


【解决方案1】:

让我们弄清楚一些重要的事情

  1. performSegueWithIdentifier: sender: 是 UIViewController 的一个方法,所以为了从单元格中执行 segue,你需要在单元格中声明你的 VC 的弱属性,像这样

@property (nonatomic, weak) UIViewController *segueController;

结束通过

执行你的操作
[self.segueController performSegueWithIdentifier:@"segue_id" sender:self];
  1. 最常用的方法——使用didSelectRowAtIndexPath有以下好处:你的segue逻辑属于controller,不属于view(因为uitableviewcell是uiview的子)。所以,我建议您使用此方法进行转场或操作视图层次结构

【讨论】:

  • 我建议也看看这个:stackoverflow.com/questions/9248798/…> 因为你可以看到如何打开新的 ViewController 以及如何向它传递参数
猜你喜欢
  • 1970-01-01
  • 2014-10-13
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 2015-04-04
  • 1970-01-01
  • 1970-01-01
  • 2012-02-08
相关资源
最近更新 更多