ap1*_*123 0 uitableview swipe ios swift
我有一个tableview,它将根据所按的按钮更改其单元格。在第一个表格视图中,我希望仅在按下按钮时才能滑动单元格。如果不是,则应禁用滑动功能。按下按钮后,表格视图即可滑动并显示我想要的操作。但是,当未按下按钮时,单元格仍然可以通过“删除”操作来滑动。如果单元格标签包含当前用户名,我也不希望可滑动行。
我在底部添加了用于tableview的代码。我该如何解决?
第一张表的代码:
override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let cell = tableView.cellForRow(at: indexPath) as! DetailsCell
let detailsAction = UITableViewRowAction(style: UITableViewRowActionStyle.default, title: "Details") { (action , indexPath) -> Void in
if isCharacterButtonPressed == true { //if button is pressed
if cell.label != currentUser.name{
let viewController = self.storyboard?.instantiateViewController(withIdentifier: "SeeDetails") as! DetailsVC
viewController.person = cell.person
self.navigationController?.pushViewController(viewController, animated: true)
} else {
return .none
}
return [detailsAction] //makes cell swipe-able
} else { //if button is not pressed
return .none //do not make the cell swipe-able
}
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我已经用canEditRow功能修复了它,但是这些红色圆圈显示在我滑动它们时可以滑动的单元格的侧面。我该如何解决?我已经附上了它的截图:

如果您检查是否在其中显示编辑动作tableView(_: UITableView, editActionsForRowAt: IndexPath),则用户体验会很草率,因为当返回一个空的动作数组而不显示任何编辑动作时,该单元格看起来好像被刷了一下,然后停止响应滑动。相反,您应该检查是否显示单元格的编辑操作,使用tableview(_:UITableView,canEditRowAt:IndexPath),然后使用其他功能在可滑动单元格时实际显示操作。
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
let cell = tableView.cellForRow(at: indexPath) as! DetailsCell
if isCharacterButtonPressed == true && cell.label != currentUser.name{
return true
} else {
return false
}
}
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let cell = tableView.cellForRow(at: indexPath) as! DetailsCell
let detailsAction = UITableViewRowAction(style: UITableViewRowActionStyle.default, title: "Details") { (action , indexPath) -> Void in
let viewController = self.storyboard?.instantiateViewController(withIdentifier: "SeeDetails") as! DetailsVC
viewController.person = cell.person
self.navigationController?.pushViewController(viewController, animated: true)
}
return [detailsAction]
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
708 次 |
| 最近记录: |