我试图在UITableView中添加一个catch块,但它没有做任何事情。
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
..........
..............
// Set text
firstTextView.setText(glass[position]);
secondTextView.setText(tableSpoon[position]);
}
如果在更新中出现故障,有关如何重新加载tableview的任何建议吗?谢谢!
更新
所以我可以处理insertRowsAtIndexPaths:nil 此作品
[self.dataArray addObject:@"xyz"];
@try {
[self.tableView beginUpdates];
//try with nil to go to catch block
[self.tableView insertRowsAtIndexPaths:nil withRowAnimation:UITableViewRowAnimationBottom];
[self.tableView endUpdates];
}
@catch (NSException * e) {
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
}
但是,如果indexPath为-1或超出范围,catch处理程序无法处理,并且我收到此错误: 无效更新:第0节中的行数无效。更新后现有部分中包含的行数(60)必须等于更新前该部分中包含的行数(60),加上或减去数字从该部分插入或删除的行(插入1个,删除0个)并加上或减去移入或移出该部分的行数(0移入,0移出)。
这不起作用
@try {
[self.tableView beginUpdates];
//try with nil to go to catch block
[self.tableView insertRowsAtIndexPaths:nil withRowAnimation:UITableViewRowAnimationBottom];
[self.tableView endUpdates];
}
@catch (NSException * e) {
[self.tableView endUpdates];
dispatch_async(dispatch_get_main_queue(), ^{
[self.tableView reloadData];
});
}
我之所以这样做是因为我试图调试此问题,为什么这首先失败了,但与此同时,我想从这个问题中恢复并刷新表格而不是崩溃的应用程序。如果失败,有没有办法撤消insertRowsAtIndexPaths ?提前谢谢。