禁用单元格滑动操作
Disable Cell Swipe Action
所以我有一个应用程序(用 Swift 编写)允许用户在 searchController 中搜索高尔夫球场。然后他们可以 select 该课程,然后 select 编辑的课程进入 tableView。我为搜索控制器和 selected 课程列表使用相同的视图控制器。
我遇到的问题是我希望用户能够滑动删除他们的 selected 课程,而不是在搜索控制器处于活动状态时填充的课程。滑动删除操作在常规 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()
}
}
}
我认为您正在寻找的方法是 tableView(_:canEditRowAtIndexPath:)
。
在此方法中返回 false
应该会禁用滑动操作。然后您可以将此值绑定到您的搜索控制器:
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return !searchController.active
}
所以我有一个应用程序(用 Swift 编写)允许用户在 searchController 中搜索高尔夫球场。然后他们可以 select 该课程,然后 select 编辑的课程进入 tableView。我为搜索控制器和 selected 课程列表使用相同的视图控制器。
我遇到的问题是我希望用户能够滑动删除他们的 selected 课程,而不是在搜索控制器处于活动状态时填充的课程。滑动删除操作在常规 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()
}
}
}
我认为您正在寻找的方法是 tableView(_:canEditRowAtIndexPath:)
。
在此方法中返回 false
应该会禁用滑动操作。然后您可以将此值绑定到您的搜索控制器:
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return !searchController.active
}