Swift - UITableView editActionsForRowAtIndexPath在单击"编辑"时打开UIPresentationController

Bog*_*nov 13 edit uitableview ios swift uipresentationcontroller

嗨有什么办法可以在触发向左滑动时打开UIPresentationController并点击它Edit

    func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
        let delete = ....
        let edit = UITableViewRowAction(style: .Normal, title: "Edit") { action, index in
            //OPEN UIPresentationController HERE
        }
        return [delete, edit]
}
Run Code Online (Sandbox Code Playgroud)

Duc*_*cky 8

和@patchdiaz一样,我不是100%肯定你想做什么.但是,此代码块可能足以自定义以实现您的目标:

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
    let edit = UITableViewRowAction(style: .Normal, title: "Edit") { action, index in
        // OPEN UIPresentationController HERE
        let vc = UIViewController(nibName: nil, bundle: nil)
        vc.view.frame = CGRect(x: 0, y: 0, width: 100, height: 200)
        vc.view.backgroundColor = UIColor.orangeColor()
        vc.modalPresentationStyle = .Popover

        let popover = vc.popoverPresentationController!
        let cell = tableView.cellForRowAtIndexPath(indexPath)!

        var cellAbsolutePosition = cell.superview!.convertPoint(cell.frame.origin, toView: nil)
        cellAbsolutePosition.x = cell.frame.width - 60
        popover.sourceRect = CGRect(origin: cellAbsolutePosition, size: cell.frame.size)
        popover.sourceView = tableView

        self.presentViewController(vc, animated: true, completion: nil)
    }
    return [edit]
}
Run Code Online (Sandbox Code Playgroud)

它将在"编辑"按钮位置显示一个弹出窗口,如下所示:

在此输入图像描述