如何实现向右滑动完成任务(待办清单)

3

我正在开发一个待办事项应用程序,现在我可以使用以下代码实现左滑删除功能:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [UITableViewRowAction]? {
    let delete = UITableViewRowAction(style: .Normal, title: "Delete") { action, index in
        print("Delete button tapped")
    }
    delete.backgroundColor = UIColor.redColor()
    return [delete]
}

我认为我已经搜索了整个互联网,但是没有一种解决方案可以同时完成向右滑动的任务并在我的设备上正常工作。我正在使用Swift 2.0,Xcode 7 beta 5。

有人以前做过这个吗?


你的意思是,你想向右滑动以显示单元格左侧的其他操作吗? - Siam
是的,例如标记为未读等。@Siam - David
可能是[在iOS 7上的邮件应用程序中的滑动删除和“更多”按钮(类似)]的重复问题(https://dev59.com/DmQm5IYBdhLWcg3w4CXA) - mattt
3个回答

2
使用提交编辑样式
 func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {

    let thisTask = fetchedResultsController.objectAtIndexPath(indexPath) as! TaskModel

    if thisTask.completed ==  true {thisTask.completed = false}
    else {thisTask.completed = true}
    (UIApplication.sharedApplication().delegate as! AppDelegate).saveContext()
}

我正在使用CoreData来存储我的信息,其中一个存储的内容是任务是否已完成。当用户在表视图上向右滑动时,它会将任务标记为已完成。我有两个部分,一个用于未完成的任务,另一个用于已完成的任务。


我删除了 `let thisTask = fetchedResultsController.objectAtIndexPath(indexPath) as! TaskModelif thisTask.completed == true {thisTask.completed = false} else {thisTask.completed = true} (UIApplication.sharedApplication().delegate as! AppDelegate).saveContext()`,但它没有起作用。 - David
你需要使用objectAtIndexPath,因为它告诉程序要删除哪一个。 - Kashish Goel

1
我认为这个项目可以进一步帮助你... SBGestureTableView:Swift UITableView子类,支持像Mailbox那样刷行和长按移动行。
如果您不想使用此类,请查看其源代码,您首先需要确定用户是从左到右还是从右到左滑动。然后再进行操作。

我尝试过这个。有很多语法错误和未知错误,以至于我甚至无法运行它。 - David
我下载了最新版本,同时运行Xcode 7和Swift 2,它完美地工作了 :-) - user5087998
是的,主分支。不,我没有转换任何东西。Xcode也没有询问。 - user5087998
但是我的Xcode要求我进行转换,你确定你正在使用Xcode 7 beta吗? - David
我似乎无法仅运行一个操作? - Peter Pik
显示剩余2条评论

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接