我的表视图显示包含一些内容的单元格和自定义附件按钮。
当我点击一个单元格时,会启动一个5s的工作。我不希望用户在后台工作没有完成时点击一个单元格,所以我这样做:
self.tableView.allowsSelection = NO;
它工作正常,用户无法点击一个单元格。
我以前做过:
self.tableView.userInteractionEnabled = NO;
但我想在后台工作时滚动我的表格视图。问题是我也可以点击小区的配件按钮。
如何避免不丢失表视图滚动?
我能做到:
- (void)didSelectAccessoryButton:(UIButton *)pButton onEvent:(id)event{
if(self.tableView.allowsSelection){
//Usual accessory button code
}
}
但配件按钮突出显示仍然存在,这意味着我需要在cellForRowAtIndexPath
中进行操作:
[accessoryButton setShowsTouchWhenHighlighted:NO];
我只是希望allowsSelection = NO
避免点击附件按钮......那么更好的方法是什么?
答案 0 :(得分:0)
我发现的最好方法是结合这个:
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
//...
tableView.allowsSelection = NO;
[tableView reloadData];
//...
}
用这个:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
//...
accessoryButton.userInteractionEnabled = tableView.allowsSelection;
//or cell.accessoryView.userInteractionEnabled = tableView.allowsSelection;
//
}
当工作完成后,self.tableView.allowsSelection = YES;
。
这个解决方案困扰我的是需要检查内部cellForRowAtIndexPath
这样做我还需要重新加载数据;但最终它只有3行。
感谢@virus提供简单的" userInteractionEnabled to accessoryButton" idea。