粉红色被赋予细胞的内容视图。
使用委托commitEditingStyle
删除正好在删除的单元格下方的单元格后,移动到右侧
我不知道细胞的左边距。 在滚动并返回到错位的单元格时,布局变得正确并且边距被移除。
我在Xcode 8.0中使用Swift。
以下是代码:
func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
if (editingStyle == UITableViewCellEditingStyle.Delete) {
// handle delete (by removing the data from your array and updating the tableview)
let date = dateKeys[indexPath.section]
var notificationObject = dataSection[date] as! [Notification]
let deleteNotificationId = notificationObject[indexPath.row].notifId
for notifObject in self.notificationArray {
if notifObject.notifId == deleteNotificationId {
if let index = self.notificationArray.indexOf(notifObject) {
self.notificationArray.removeAtIndex(index)
self.dataSection = self.categorizeNotification(self.notificationArray)
self.dateKeys = self.sortArrayDate()
self.notificationTable.reloadData()
break
}
}
}
}
}
答案 0 :(得分:0)
您应该在表格视图中为删除行编写此代码:
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
// the cells you would like the actions to appear needs to be editable
return true
}
func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath)
{
if editingStyle == .delete
{
showsArray.remove(at: indexPath.row)
tableView.reloadData()
}
}
答案 1 :(得分:0)
Occour同样的问题。
override func layoutSubviews() {
super.layoutSubviews()
if self.editingStyle != .delete && self.frame.origin.x > 0{
var originFrame = self.frame
originFrame.origin.x = 0
self.frame = originFrame
}
}
将UITableViewCell frame.origin.x
设置为零以避免它。