除一个单元格外,重新加载表视图

时间:2016-07-06 07:27:58

标签: ios objective-c uitableview reloaddata

我有一个包含可搜索数据的表格视图,以及一个包含可编辑textField的单元格(可使用pickerView编辑)。我使用pickerView选择要显示的tableview部分。但是,当在pickerView中选择了一个新行时,我不希望解除pickerView,这就是我使用

时会发生的情况。
[self.tableView reloadData];

我尝试了以下方法来解决问题,尝试重新加载除了包含textField的单元格之外的表:

-(void)pickerView:(UIPickerView *)pickerView didSelectRow:(NSInteger)row inComponent:(NSInteger)component
{
NSIndexSet *toReload = [[NSIndexSet alloc] initWithIndex:1];
if (row == 0)
{
    self.selectedDepartmentField.text = @"All";
    toReload = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(1, 13)];
}
else
{
    self.selectedDepartmentField.text = [self.departments objectAtIndex:(row - 1)];
}
[self.tableView reloadSectionIndexTitles];
[self.tableView beginUpdates];
[self.tableView reloadSections:toReload withRowAnimation:UITableViewRowAnimationNone];
[self.tableView endUpdates];

这与EXC_BAD_ACCESS(代码= 1,地址= 0x28)

崩溃

我应该如何重新加载表格中的数据以保持pickerView的活动状态?

1 个答案:

答案 0 :(得分:1)

以下是一种可能的方法

  1. 使用

    获取NSIndexPath数组
    NSArray *visibleIndexPaths = [self.tableView indexPathsForVisibleRows];
    
  2. 使用visibleIndexPaths中的选择器删除单元格的索引路径。

  3. 使用以下方法重新加载tableview

    [self.tableView reloadRowsAtIndexPaths:visibleIndexPaths withRowAnimation:UITableViewRowAnimationNone];
    
  4. 这应该重新加载除拾取器之外的所有可见单元格。