gpt4 book ai didi

ios - 根据条件和 UI 说明删除 tableView 行

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:00:31 24 4
gpt4 key购买 nike

我需要一种允许用户删除 tableView 行的方法,前提是满足条件(如果 source == "MyApp")。我在下面提供了一个有效的示例。

func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return true
}

func tableView(tableView: UITableView, commitEditingStyle editingStyle: UITableViewCellEditingStyle, forRowAtIndexPath indexPath: NSIndexPath) {
let source = objectSample[indexPath.row].source.name

if source == "MyApp"{
if (editingStyle == UITableViewCellEditingStyle.Delete) {
let UUIDtoDelete = objectSample[indexPath.row].UUID
deleteUUIDobject(UUIDtoDelete)
objectSample.removeAtIndex(indexPath.row)
tableView.deleteRowsAtIndexPaths([indexPath], withRowAnimation: UITableViewRowAnimation.Automatic)

println("Deleted")
}
}
else {
println("Not allowed to delete")
}
}

生成的 UI 让用户有点困惑,因为它会在所有行上留下一个红色的滑动删除按钮,无论他/她是否真的可以删除该行。因此,如果不满足条件,我尝试将删除按钮设为灰色:

func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {
let source = objectSample[indexPath.row].source.name
println(source)

if source == "MyApp"{
var deleteButtonRed = UITableViewRowAction(style: .Default, title: "Delete", handler: { (action, indexPath) in
println("To delete is OK, set color red")
})
deleteButtonRed.backgroundColor = UIColor.redColor()
return [deleteButtonRed]
}

else{
var deleteButtonGray = UITableViewRowAction(style: .Default, title: "Delete", handler: { (action, indexPath) in
println("To delete is NOT OK, ret color gray")
})
deleteButtonGray.backgroundColor = UIColor.grayColor()
return [deleteButtonGray]

}

return ["Will Never Happen"]
}

我的问题是这些方法不能一起工作。出于某种原因,如果我应用方法 editActionsForRowAtIndexPath,则永远不会评估 commitEditingStyle。即使 source == "MyApp",该行也不会被删除。如何将两者结合起来?
或者是否有更好的方法来显示用户可以/不能删除哪些 tableView 条目?

任何帮助将不胜感激!谢谢。

最佳答案

试试这个来防止其他单元格编辑:

func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
return source == "MyApp"
}

或者这使其他单元格可编辑,但没有删除控件:

func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {
if source == "MyApp" {
return UITableViewCellEditingStyle.Delete
} else {
return UITableViewCellEditingStyle.None
}
}

关于ios - 根据条件和 UI 说明删除 tableView 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29708861/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com