我想在编辑模式开始后更改UITableView显示的删除文本。
委托方法:
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
只有在第一次显示索引路径的deleteButton时才会调用,但如果我的模型在其下面发生更改,则需要更新此文本。是否可以在不重新加载整个部分的情况下再次调用此方法?请参阅下面的代码,并提前感谢您的帮助。
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath {
ContainerTableViewCell *cell = (ContainerTableViewCell*)[self.tableView cellForRowAtIndexPath:indexPath];
if ([cell.editPhotos count] > 0) {
return [NSString stringWithFormat:@"Delete %d photos", [cell.editPhotos count]];
}
else{
return @"Delete Section";
}
}
对于一些上下文,我有一个嵌套在UITableViewCell中的UICollectionView,当选择一个单元格时会发送通知。我尝试用以下内容重新加载该部分:
[self.tableView reloadRowsAtIndexPaths:@[[self.tableView indexPathForCell:cell]] withRowAnimation:UITableViewRowAnimationNone];
但这是不可取的,因为它会导致tableview跳转并且不会正确显示选择。我也尝试过:
[self.tableView.delegate tableView:self.tableView titleForDeleteConfirmationButtonForRowAtIndexPath:[self.tableView indexPathForCell:cell]];
无奈之下。虽然这确实导致调用正确的方法,但它不会更改删除文本。
答案 0 :(得分:0)
我刚刚编写了一个基本的测试应用程序,它按预期工作。
我想也许你获取数据的方式不是最好的方法。您正在查询可能已出列的单元格,因此可能未包含最新信息。
相反,您应该努力实现真正的MVC模式,其中您的数据独立于您的视图,包括集合视图单元。
答案 1 :(得分:0)
我找到了解决这个问题的方法,虽然它有点像黑客。委托方法
-(NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
每次UITableView进入编辑模式时,每个单元格都会调用一次。因此,为了在数据更改时更改标题,我切换了编辑模式,使用bool表示我希望保存所选信息,即:
cell.retainEditSelection = YES;
[self.tableView setEditing:NO animated:NO];
[self.tableView setEditing:YES animated:NO];
cell.retainEditSelection = NO;
每次选择应更改删除文本的内容时,我都会使用此选项。希望这会有所帮助。