Object-C:为什么删除单元格后tableView无法响应任何事件?

时间:2017-05-22 14:23:30

标签: ios objective-c iphone uitableview ipad

我制作这样的观点:myController.view.aView.scrollView.tableView

问题发生在我之后:

D_1。尝试删除一行。 // - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath

D_2。 dataSource删除一个数据。

D_3。用dataSource做点什么。

D_4。 [tableView relaodData] .//它在主线程中工作。

问题在于:

P_1。 tableView无法滚动。

P_2。 tableView不执行任何委托方法。

P_3。单元格中的视图,不响应任何事件。

我试试这个:

T_1。将{D_4)[tableView relaodData]替换为[tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationNone] 。 没有问题,但我必须使tableView reloadData。

T_2。在aView中添加此代码:

- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
UIView *getView = [super hitTest:point withEvent:event];
debugLog(@"hit test get view : %@", getView);
return getView;
}

它可以正常观看。但是观点没有回应任何事件。

我认为当我做[tableView reloadData]时发生了一些问题。但我找不到它。

附加:

  1. tableView init:

    self.tableView                    = [UITableView new];
    self.tableView.dataSource         = self.tableDataSource;
    self.tableView.delegate           = self.tableDelegate;
    self.tableView.bounces            = NO;
    self.tableView.separatorStyle     = UITableViewCellSeparatorStyleNone;
    self.tableView.estimatedRowHeight = 55;
    self.tableView.rowHeight          = UITableViewAutomaticDimension;
    
    
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
    TableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    if (!cell) {
        cell = [ACellClass newWithParameters:...];
    }
    [cell clear];
    [self updateCell:cell withIndexPath:indexPath];
    return cell;
    }
    
  2. 我将AView(aView.scrollView.tableView)作为自定义视图,tableView.delegate,tableView.dataSource是myController。 aView是[myController viewWillAppear:animated]

  3. 中的新功能
  4. 使用委托删除单元格:

    - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath {
       if (editingStyle == UITableViewCellEditingStyleDelete) {
         //delete data with index : indexPath.row.
         [tableView reloadData];
       }
     }
    
  5. 我在D_3做了一些数据操作。

0 个答案:

没有答案