【发布时间】:2018-10-09 10:52:33
【问题描述】:
我有一个带有自定义节标题的 UITableView,它是通过故事板使用带有“headerCell”标识符的自定义原型单元格以及一个名为“HeaderViewCell”的子类 UITableViewCell 的 Cocoa Touch 类制作的。
func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerCell = tableView.dequeueReusableCell(withIdentifier: "headerCell") as! HeaderViewCell
headerCell.sectionTitle.text = viewModel.items[section].sectionTitle
headerCell.section = section
headerCell.delegate = self
return headerCell
}
单元格中的按钮会触发一个委托函数,该函数会传入分配给它的部分。
一切都很好 - 设置标题,点击我需要的按钮等......除了当您点击部分标题(左侧)和按钮(右侧)之间的空白区域时,部分标题会突出显示就好像它是节中的一个单元格一样,然后对节中的第一行执行segue。
在属性检查器中选择设置为“无”。如果我切换启用用户交互,则该按钮不起作用。
我发现了很多帖子,其中人们试图在部分标题上注册点击(答案:使用点击手势),但我已经筋疲力尽地寻找如何阻止它们。在委托方法的 didSelectRow 中,我看到了与单击行而不是标题相同的 IndexPath,因此我无法从那里阻止它。
由于使用自定义原型单元格是对自定义节标题的最广泛建议的响应,我本以为这对其他人来说也是一个问题。 ?
【问题讨论】:
-
你想阻止 headerCell 突出显示还是阻止它执行 segue?
-
Lance,节标题既突出显示又执行 segue-节标题不应该做任何这些事情。点击标题会导致 didSelectRow print("section: (indexPath.section) | row: (indexPath.row)") section: 1 | row: 0 没有区分节标题和第一行 [0]
-
马特的回答应该有效。
-
马特的回答不起作用。它停止选择和继续的唯一方法是设置为不进行用户交互。
标签: ios swift uitableview