禁用单元格滑动操作

时间:2015-12-31 18:25:40

标签: swift uitableview tableviewcell edit-tableview

所以我有一个应用程序(用Swift编写),允许用户在searchController中搜索高尔夫球场。然后他们可以选择该课程,然后选择的课程进入tableView。我对搜索控制器和所选课程列表使用相同的视图控制器。

我遇到的问题是我希望用户能够滑动以删除他们选择的课程,而不是在搜索控制器处于活动状态时填充搜索控制器的课程。滑动删除操作正在常规tableView中工作。当searchController处于活动状态时,我将其置于禁用删除按钮的位置。但是,如果searchController处于活动状态,我想要做的就是没有单元格能够完全滑动。似乎无法让它发挥作用。有什么建议?拜托,谢谢你。

这是我的代码:

 override func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {

    if searchController.active {

    UITableViewCellEditingStyle.None

    } else {

    let deletedValue = previousCoursesFromRealm[indexPath.row]

    if editingStyle == UITableViewCellEditingStyle.Delete {
        let realm = try! Realm()
        try! realm.write {
        realm.delete(deletedValue)
        }

     coursesTableView.reloadData()

     }
    }
   }  

1 个答案:

答案 0 :(得分:6)

我认为您正在寻找的方法是tableView(_:canEditRowAtIndexPath:)

在此方法中返回false应禁用滑动操作。然后,您可以将此值与搜索控制器绑定:

override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
    return !searchController.active
}