【发布时间】:2025-12-12 12:30:18
【问题描述】:
我不确定这是否与 SWIFT 或某些错误有关,但我曾经能够在目标 c 中调用它来放大和缩小 tableview 单元格:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
if([indexPath isEqual:[tableView indexPathForSelectedRow]]) {
return 500.0;
}
return 81.0;
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
if (isShowingDetails == YES) {
isShowDetails = NO;
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[tableView beginUpdates];
[tableView endUpdates];
}else {
isShowingDetails = YES;
[tableView beginUpdates];
[tableView endUpdates];
}
}
但是现在如果我尝试使用这个 SWIFT 版本,当取消选择该行时,它有几秒钟的非常糟糕的延迟.. 这是 SWIFT 版本:
override func tableView(tableView: UITableView!,
heightForRowAtIndexPath indexPath: NSIndexPath!) -> CGFloat {
if(indexPath.isEqual(tableView.indexPathForSelectedRow())) {
return 500.0;
}
return 81.0;
}
override func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
if(isExpanded == true)
{
isExpanded = false
self.tableView.deselectRowAtIndexPath(indexPath, animated: true)
self.tableView.beginUpdates()
self.tableView.endUpdates()
} else {
isExpanded = true
self.tableView.beginUpdates()
self.tableView.endUpdates()
}
}
有什么想法吗?正如我所说,我不确定它是否是我写的方式,但我不明白为什么我在目标 C 中从来没有遇到过任何问题。 第一次选择它时它在 SWIFT 中运行良好,只是更新延迟真的很痛苦..
【问题讨论】:
-
仅供参考 - 这是 Swift,而不是 SWIFT。
-
== YES和== true是多余的、不必要的、烦人的和分散注意力的。过去几天我经常看到这种情况。谁教这个? -
你为什么在你的
didSelect方法中调用begin/endUpdates?尤其是当您甚至不执行更新时,这似乎很浪费。
标签: ios uitableview swift