我显示在一个组表视图内容解析从XML。我想禁用它上的单击事件(我应该不能单击它)表包含两个组。我只想禁用第一组的选择,而不是第二组。点击第二组的第一行导航到我的管播放器视图。
如何使特定的组或行可选?
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
if(indexPath.section!=0)
if(indexPath.row==0)
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:tubeUrl]];
}
谢谢。
你只需要把这段代码放到cellForRowAtIndexPath中
禁用单元格的选择属性:(在点击单元格时)
cell.selectionStyle = UITableViewCellSelectionStyleNone;
选择单元格(点击单元格)
// Default style
cell.selectionStyle = UITableViewCellSelectionStyleBlue;
// Gray style
cell.selectionStyle = UITableViewCellSelectionStyleGray;
注意,单元格selectionStyle = UITableViewCellSelectionStyleNone;仍然会导致UI在用户触碰时调用didSelectRowAtIndexPath。为了避免这种情况,请按照下面的建议进行设置。
cell.userInteractionEnabled = NO;
代替。还要注意,你可能想要设置cell.textLabel.enabled = 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
}
}