编辑
:
这个答案的解决方案与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];
}
这个
开始更新
和
结束更新
这些方法的效果相当不一致。这个
didSelectRowAtIndexPath
方法在每次触摸时都会被正确调用(一开始我以为UI被阻止了)
selectedIndexes
正在正确存储交替值。问题是,有时我触摸一个表格单元格,所有的方法都被正确调用,但单元格的高度不会改变。有人知道发生了什么吗?