我有一个带有可扩展单元格的TableView,使用以下代码:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
let index = indexPath
if(selectedIndexPath != nil) {
if(index == selectedIndexPath) {
return 90
}
else {
return 60
}
}
else {
return 60
}
}
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
switch selectedIndexPath {
case nil:
selectedIndexPath = indexPath
default:
if selectedIndexPath! == indexPath {
selectedIndexPath = nil
}
else {
selectedIndexPath = indexPath
}
}
tableView.reloadRows(at: [indexPath], with: .automatic)
}
现在,我还想使用代码here为每个单元格添加滑动手势。
func tableView(tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let share = UITableViewRowAction(style: .Normal, title: "Share") { action, index in
print("share button tapped")
}
return [share]
}
一切都很好,除了刷子时细胞的高度。
我认为这可能是因为最后选择的细胞高度。
我尝试使用selectedIndexPath = indexPath
中的editActionsForRowAt
进行修复,但问题仍然存在。
https://i.stack.imgur.com/iQCEe.png
编辑:我注意到,如果heightForRowAt
总是返回60,则问题仍然存在。
答案 0 :(得分:0)
func tableView(tableView: UITableView, estimatedHeightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
let index = indexPath
if(selectedIndexPath != nil) {
if(index == selectedIndexPath) {
return 90
}
else {
return 60
}
}
else {
return 60
}
}
它对我或你的工作也可以检查是否有任何tableview单元格都适当。或者你只能使用任何一种tableview高度方法来获得更好的结果。
答案 1 :(得分:0)
我相信当您进入单元格的编辑模式时,您的输入会被意外地选中/取消选择,原因是单元格上的初始点击或用户在您尝试访问编辑操作时所做的其他操作。
为避免这种情况,请在tableView.allowsSelectionDuringEditing = false
。
viewDidLoad
或者,尝试使用didSelectRowAt
将代码包装在if tableView.editing == false
中。
答案 2 :(得分:0)
我解决了最初隐藏内容(在我的情况下是一个名为const uint8 unsignedByteArray[] = {189U, 139U, 64U, 0U};
的按钮)在点击后显示(查看>绘图>检查隐藏)和{{1}我用:
button