Swift - 在静态UITableView

时间:2017-02-06 21:56:48

标签: ios swift xcode uitableview swift3

我想实现一个功能,使用Swift 3.0刷掉整个表格单元格。就像你可以在iOS 10的邮件应用程序中滑动删除一样。

重要的是要注意,我并不是指滑动显示删除按钮,然后处理删除。我的意思是用户可以在屏幕上从右向左滑动以删除。 (另请注意,tableView是静态的,而不是动态的)

我是否必须为此实现UISwipleGestureRecognizer?

2 个答案:

答案 0 :(得分:0)

您可以像对待包含动态内容的表一样实施UITableViewDataSource方法tableView(_:commit:forRowAt:)tableView(_:canEditRowAt:)

但是,在包含静态内容的表中,您无法插入或删除行。由于表是静态的,所以行应该保留。您可以做的是更新刷过的行以反映已删除的状态。

例如:在我的应用中,我使用内置的滑动手势来重置设置。用户滑动行(静态内容),点击“删除”按钮,应用程序相应地设置该单元格中的标签和图像。该行不会被删除,只是更新,就像您通常使用静态单元格一样(分配插座并像其他静态内容一样访问它们)。

修改 另请查看iOS 11中performsFirstActionWithFullSwipe类的UISwipeActionsConfiguration属性。将其设置为true以允许完整的滑动手势,无需安装自己的识别器。

你确实提到过iOS 10 Mail;我不知道Apple是否或如何在iOS 10中使用它,因为此属性是iOS 11功能。 iOS Mail也很可能有一个包含动态内容的表格。

答案 1 :(得分:-1)

您只需添加这些功能并根据需要进行更改。

    override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {

        let example1 = UITableViewRowAction(style: .normal, title: "example1") { (action: UITableViewRowAction!, indexPath: IndexPath!) -> Void in
            //  run your desired action
        }

        example1.backgroundColor = .white

        let example2 = UITableViewRowAction(style: .normal, title: "example2") { (action: UITableViewRowAction!, indexPath: IndexPath!) -> Void in
            //  run your desired action
        }

        example2.backgroundColor = .green

        let example3 = UITableViewRowAction(style: .normal, title: "example3") { (action: UITableViewRowAction!, indexPath: IndexPath!) -> Void in
            //  run your desired action
        }

        example3.backgroundColor = .orange

        return [example1, example2, example3]

    }

和这个

{{1}}