catch块中的UITableView reloadData

时间:2017-05-12 19:25:02

标签: ios objective-c uitableview reloaddata

我试图在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 ?提前谢谢。

0 个答案:

没有答案