我显示在一个组表视图内容解析从XML。我想禁用它上的单击事件(我应该不能单击它)表包含两个组。我只想禁用第一组的选择,而不是第二组。点击第二组的第一行导航到我的管播放器视图。
如何使特定的组或行可选?
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.section!=0)
if(indexPath.row==0)
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:tubeUrl]];
}
谢谢。
以上答案中没有一个真正正确地解决了这个问题。原因是我们想要禁用单元格的选择,但不一定是单元格内的子视图。
在我的情况下,我是在行中间呈现一个UISwitch,我想禁用选择其余的行(这是空的),但不是为开关!正确的方法是在方法中
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
哪里有陈述的形式
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
禁用对特定单元格的选择,同时允许用户操作开关,从而使用适当的选择器。如果有人通过控件禁用用户交互,则不成立
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
方法,它只是准备单元,不允许与UISwitch交互。
此外,利用该方法
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
以取消选择具有窗体语句的单元格
[tableView deselectRowAtIndexPath:indexPath animated:NO];
当用户按下单元格的原始内容视图时,仍然显示所选择的行。
这只是我的个人意见。我敢肯定很多人会发现这很有用。
我同意布莱恩的回答。
如果我用cell。isUserInteractionEnabled = false,那么单元格中的子视图将不会被用户交互。
另一方面,设置单元格。selectionStyle = .none将触发didSelect方法,尽管没有更新选择颜色。
使用willSelectRowAt是我解决问题的方法。例子:
func tableView(_ tableView: UITableView, willSelectRowAt indexPath: IndexPath) -> IndexPath? {
switch (indexPath.section, indexPath.row) {
case (0, 0), (1, 0): return nil
default: return indexPath
}
}