用户在表格 View 中滑动单元格时如何创建“更多”按钮(例如ios 7中的邮件应用程序)

我一直在这里和Cocoa Touch论坛中都在寻找这些信息,但是我似乎找不到答案,我希望有一个比我自己聪明的人能为我提供解决方案。

我希望当用户滑动表格 View 单元格时显示多个编辑按钮(他默认是删除按钮)。
在iOS 7的邮件应用中,您可以滑动以删除,但是会出现一个“更多”按钮。

最佳答案

如何实现

看来iOS 8开启了这个API。 Beta 2中提供了此类功能的提示。

要使某些功能正常工作,请在UITableView的委托(delegate)上实现以下两种方法,以获得所需的效果(有关示例,请参见要点)。

- tableView:editActionsForRowAtIndexPath:
- tableView:commitEditingStyle:forRowAtIndexPath:

已知的问题

该文档说tableView:commitEditingStyle:forRowAtIndexPath是:



但是,没有它,刷卡是行不通的。即使该方法存根为空,目前仍需要它。这显然是beta 2中的错误。

资料来源

https://twitter.com/marksands/status/481642991745265664
https://gist.github.com/marksands/76558707f583dbb8f870

原始答案:https://stackoverflow.com/a/24540538/870028

更新:

可以正常工作的示例代码(在Swift中):http://dropbox.com/s/0fvxosft2mq2v5m/DeleteRowExampleSwift.zip

示例代码在MasterViewController.swift中包含此易于遵循的方法,仅使用此方法,您就会获得OP屏幕快照中所示的行为:
override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {

    var moreRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "More", handler:{action, indexpath in
        println("MORE•ACTION");
    });
    moreRowAction.backgroundColor = UIColor(red: 0.298, green: 0.851, blue: 0.3922, alpha: 1.0);

    var deleteRowAction = UITableViewRowAction(style: UITableViewRowActionStyle.Default, title: "Delete", handler:{action, indexpath in
        println("DELETE•ACTION");
    });

    return [deleteRowAction, moreRowAction];
}

关于ios - 滑动到“删除”和 “More”按钮(例如在iOS 7上的“邮件”应用中),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24142591/

10-12 00:01
查看更多