gpt4 book ai didi

iphone - 在不处于编辑模式时重新排序 UITableView 上的控件?

转载 作者:行者123 更新时间:2023-12-03 18:23:51 25 4
gpt4 key购买 nike

我有一个 UITableView,我希望能够在不处于编辑模式时对行重新排序,这意味着我不想在按“编辑”之前看到删除图标。我希望能够始终看到并使用重新排序控件。这可能吗?

我是否必须始终将 UITableView 保持在编辑模式并手动启用/禁用删除图标?在这种情况下如何禁用滑动删除?

最佳答案

我找到了解决方案。 UITableViewCell 拒绝绘制重新排序控件,除非处于编辑模式。幸运的是,UITableViewCellUITableView 分别跟踪编辑,而且至关重要的是,UITableView 实际上可以处理重新排序,而不管其自身的编辑模式如何。我们只需要欺骗单元格来绘制重新排序控件,然后我们就可以回家了。

子类UITableViewCell如下:

class ReorderTableViewCell: UITableViewCell {

override var showsReorderControl: Bool {
get {
return true // short-circuit to on
}
set { }
}

override func setEditing(editing: Bool, animated: Bool) {
if editing == false {
return // ignore any attempts to turn it off
}

super.setEditing(editing, animated: animated)
}

}

现在只需在要启用重新排序的单元格上设置 editing = true 即可。您可以将其设置为以 -tableView:canMoveRowAtIndexPath: 为条件。

在 TableView 数据源中:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)

// Configure the cell...
:

cell.editing = self.tableView(tableView, canMoveRowAtIndexPath: indexPath) // conditionally enable reordering

return cell
}

唯一的缺点是这与 TableView allowsMultipleSelectionDuringEditing选项不兼容;编辑控件总是错误地显示。解决方法是仅在实际 TableView 编辑期间启用多重选择。

在您的 TableView Controller 中:

override func setEditing(editing: Bool, animated: Bool) {
super.setEditing(editing, animated: animated)

self.tableView.allowsMultipleSelectionDuringEditing = editing // enable only during actual editing to avoid cosmetic problem
}

此外,在 -viewDidLoad 或 Storyboard中,将 allowsMultipleSelectionDuringEditing 的初始值设置为 false。

关于iphone - 在不处于编辑模式时重新排序 UITableView 上的控件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6097464/

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