編集モードが開始されたら、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];
しかし、これは望ましくありません。なぜなら、テーブルビューでジャンプが発生し、選択が正しく表示されないからです。私も試しました:
[self.tableView.delegate tableView:self.tableView titleForDeleteConfirmationButtonForRowAtIndexPath:[self.tableView indexPathForCell:cell]];
必死で。これにより正しいメソッドが呼び出されますが、削除テキストは変更されません。