【问题标题】:UITableView didSelectRowAt is not called iOS 10, but works for 9.3.5UITableView didSelectRowAt 不称为 iOS 10,但适用于 9.3.5
【发布时间】:2017-11-10 20:32:49
【问题描述】:

关于这个问题有很多问题,但到目前为止我找到的答案并不适用。在这种情况下,该表在 iOS 9.3.5 中正常工作,但不适用于 iOS 10(或 10.3.1)

我已经排除了:

  • 未正确设置代理。委托执行 3 个功能,didSelectRowAtheightForRowAteditActionsForRowAt后者是从右到左的滑动,它提供了执行与选择行完全相同的功能的选项。。这三个功能在 v9.3.5 上正常工作(通过模拟器和我测试的旧 iPad 进行测试。)当我通过模拟器或我的 iPhone SE 使用 v10 时,heightForRowAteditActionsForRowAt 工作但 @987654328 不工作@(就此而言 - 我试过 willSelectRowAt。它也不适用于 v10。)
  • 任何印刷错误(因为它适用于 9.3.5)

我找不到任何关于 tableView(:didSelectRowAt) 从 iOS 9 到 iOS 10 的 Swift 更改。

背景

我有一个带有相应 xib(“DetailVC”)的视图控制器。这个xib有一个标签,然后在标签下面有一个tableview。表格的单元格是另一个 xib。

视图控制器通过

let uomVC = DetailVC()
self.navigationController?.pushViewController(uomVC, animated: true)

然后在 DetailVC 中,我使用 NSFetchedDataController 并通过 tableView 数据源委托将其连接到 tableview。 (核心数据加载和显示效果很好。)

代码(我会根据需要/要求发布其他代码 - Swift 3)

viewDidLoad() - 部分

let nib: String = "DetailCell"
let reuseID: String = "detailCell"
tableView.register(UINib.init(nibName: nib, bundle: nil), forCellReuseIdentifier: reuseID)

tableView(:cellForRowAt)

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: reuseID) as! IngredientDetailCell
    cell.present(ingredient: _fetchedResultsController.object(at: indexPath))
    cell.isUserInteractionEnabled = true // Added later as a guess per SO suggestions
    return cell
}

为了争论 - 这不会打印

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {      
    print("Selected a row")
    // delegate?.selectedIngredient(_fetchedResultsController.object(at: indexPath))
    // self.navigationController?.popViewController(animated: true)
}

查看

【问题讨论】:

  • 单元格的内容是什么?我的意思是因为它是一个自定义单元格,cell.contentView 的视图层次结构是什么?
  • @Malik - 水平堆栈中有一对标签
  • 确保在 viewDidLoad 中包含 UITableViewDelegate 和 self.tableView.delegate = self self.tableView.dataSource = self
  • 确保您没有使用任何手势。如果您正在使用任何手势,请将其删除并尝试 didselectat 方法
  • 看起来很有趣。必须查看您使用 tableView 的类,可能还有情节提要中的 tableView 属性。

标签: ios swift uitableview ios10


【解决方案1】:

为了完整性,以防万一有人遇到这种奇怪的情况。

问题是我的 UITableViewCell xib。我一定是最初将它设计为 UIView,然后添加了 UITableViewCell。层次结构应该从 UITableViewCell 开始。我将 UITableViewCell 从视图下方移出(以红色圈出),删除了视图并重新连接了 IBOutlets。奇怪的是它可以在 iOS 9.3.5 上运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-20
    • 1970-01-01
    • 2014-04-06
    • 2018-11-27
    • 1970-01-01
    相关资源
    最近更新 更多