有时,当执行UITableAction的块时,整个UITableView会冻结,它不会响应点击或滚动。然而,页面的其余部分是响应式的。动作看起来像这样
-(NSArray *)tableView:(UITableView *)tableView editActionsForRowAtIndexPath:(NSIndexPath *)indexPath
{
__weak ServiceOrderDetailsViewController* weakSelf = self;
UITableViewRowAction *button = [UITableViewRowAction rowActionWithStyle:UITableViewRowActionStyleDefault title:@"Mark as Complete" handler:^(UITableViewRowAction *action, NSIndexPath *indexPath)
{
if (indexPath.section < weakSelf.sections.count && indexPath.row > 0)
{
NSString* key = weakSelf.sections[indexPath.section];
if (indexPath.row - 1 < [weakSelf.datasource[key] count])
{
//Action
}
}
dispatch_async(dispatch_get_main_queue(), ^
{
[weakSelf.UITableView_Bins setEditing:NO animated:YES];
[weakSelf.UITableView_Bins beginUpdates];
[weakSelf.UITableView_Bins reloadRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationAutomatic];
[weakSelf.UITableView_Bins endUpdates];
});
}];
button.backgroundColor = [UIColor InTrackGreenColor];
return @[button];
}
如果我删除了reloadRows,则不会出现此问题,但是单元格的内容不会更新。
答案 0 :(得分:0)
所以我们发现了一个工作,我想我会分享。它是hackish,我宁愿找到更好的方法,但暂时它有效。
[self.UITableView_Bins performSelector:@selector(reloadData) withObject:nil afterDelay:0.25 inModes:@[NSDefaultRunLoopMode]];
延迟四分之一秒,我们避免了冻结问题。