在UITableView

时间:2016-12-02 06:00:33

标签: ios swift xcode uitableview

粉红色被赋予细胞的内容视图。

使用委托commitEditingStyle

通过滑动删除删除单元格

enter image description here

删除正好在删除的单元格下方的单元格后,移动到右侧

我不知道细胞的左边距。 在滚动并返回到错位的单元格时,布局变得正确并且边距被移除。

我在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
                    }
                }
            }
        }
    }

2 个答案:

答案 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设置为零以避免它。