我有一个带有3个部分(3个单元格)的UitableView,在第1部分中有一个项目列表,用户可以使用按钮进行删除,所有删除过程都很好,但是当我删除一个项目时; uitableview到达顶部和底部(类似于重新加载视图),我想要
当用户删除项目时,仅从位置删除这是我的代码
func numberOfSections(in tableView: UITableView) -> Int {
return 3
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
var value: Int = 0
if(section == 0){
value = 1
}else if(section == 1){
value = items.count //20
}else if(section == 2){
value = 1
}
return value
}
@objc func delete_item(sender: UIButton){
let point = sender.convert(CGPoint.zero, to: tv_items)
guard let indexPath = tv_items.indexPathForRow(at: point) else{
return
}
tv_items.beginUpdates()
self.items.remove(at: indexPath.row)
tv_items.deleteRows(at: [indexPath], with: .fade)
tv_items.endUpdates()
}
cell.btn_delete.tag = indexPath.row
cell.btn_delete.addTarget(self, action: #selector(delete_item), for: .touchUpInside)
预先感谢
答案 0 :(得分:0)
如果您使用的是estimatedHeightForRowAt
,请禁用它并使用heightForRowAt
功能。
或者,在endUpdates()
之后使用它:
tv_items.scrollToRow(at: indexPath, at: .top, animated: false)
如果行高度恒定,则可以使用:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 80 // or any constant height
}
如果您需要根据内容的高度而变化,莱姆就知道内容是什么,以便我提供帮助。
答案 1 :(得分:0)
使用以下方法,我认为它将解决您的问题:-
override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 50.0 // height of the row (Eg. 50.0)
}