編集: この回答の解決策は、iOS7 が時々返されたり、返されたりすることに関連していNSIndexPath
ますNSMutableIndexPath
。この問題は実際には とは関係ありませんでしbegin/endUpdates
たが、解決策が他の人に役立つことを願っています。
すべて - iOS 7 でアプリを実行していますが、beginUpdates
およびのendUpdates
メソッドで問題が発生していUITableView
ます。
タッチしたときにセルの高さを変更する必要があるテーブルビューがあります。以下は私のコードです:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
// If our cell is selected, return double height
if([self cellIsSelected:indexPath]) {
return 117;
}
// Cell isn't selected so return single height
return 58;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
ChecklistItemCell *cell = (ChecklistItemCell *)[self.tableview cellForRowAtIndexPath:indexPath];
[cell.decreaseButton setHidden:NO];
[cell.increaseButton setHidden:NO];
// Toggle 'selected' state
BOOL isSelected = ![self cellIsSelected:indexPath];
DLog(@"%@", selectedIndexes);
DLog(@"is selected: %@", isSelected ? @"yes":@"no");
// Store cell 'selected' state keyed on indexPath
NSNumber *selectedIndex = @(isSelected);
selectedIndexes[indexPath] = selectedIndex;
[tableView beginUpdates];
[tableView endUpdates];
}
beginUpdates
およびendUpdates
メソッドはかなり一貫性のない動作をしています。メソッドはタッチごとに正しく呼び出され(didSelectRowAtIndexPath
最初はUIがブロックされていると思いました)、selectedIndexes
交互の値を正しく保存しています。問題は、表のセルに触れて、すべてのメソッドが適切に呼び出されることがありますが、セルの高さが変わらないことです。何が起こっているか知っている人はいますか?