我制作这样的观点: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]时发生了一些问题。但我找不到它。
附加:
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;
}
我将AView(aView.scrollView.tableView)作为自定义视图,tableView.delegate,tableView.dataSource是myController。 aView是[myController viewWillAppear:animated]
。
使用委托删除单元格:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath*)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
//delete data with index : indexPath.row.
[tableView reloadData];
}
}
我在D_3做了一些数据操作。