gpt4 book ai didi

swift - 是否可以以编程方式禁用 commitEditingStyle?

转载 作者:搜寻专家 更新时间:2023-10-30 23:00:12 26 4
gpt4 key购买 nike

在我的表格 View 中,我只希望某些单元格能够根据条件拖动到左侧以获得某些选项。其他单元格的行为就好像 commitEditingStyle 被禁用一样。这可能吗?

使用下面的代码,我可以在满足条件时添加操作,但其他单元格仍会获得默认的“删除”操作。我如何摆脱该删除操作?

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

override func tableView(tableView: UITableView, editActionsForRowAtIndexPath indexPath: NSIndexPath) -> [AnyObject]? {

let object = items[indexPath.row]
if object.name == "name" {

// someAction
var addAction = UITableViewRowAction(style: .Default, title: "+") { (action: UITableViewRowAction!, indexPath: NSIndexPath!) -> Void in
}
return [addAction]
}
return nil
}

通过下面的代码,我设法启用和禁用了这些操作。但只能使用 Delete 按钮。

override func tableView(tableView: UITableView, editingStyleForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCellEditingStyle {

let object = items[indexPath.row]
if object.name == "joyce" {
return UITableViewCellEditingStyle.Delete
} else {
return UITableViewCellEditingStyle.None
}
}

最佳答案

您需要一种方法来根据您的数据模型确定可编辑状态。例如:

class Message
{
var subject : String
var title : String
var isEditable : Bool

init(subject: String, title: String)
{
self.subject = subject
self.title = title
self.isEditable = true
}
}

有了它,您可以轻松处理 tableView:canEditRowAtIndexPath: 委托(delegate)方法。你的 View Controller 应该看起来像这样:

class ViewController : UIViewController, UITableViewDataSource, UITableViewDelegate
{
var tableView : UITableView!
var messages : [Message]

// MARK: - UITableView Delegate

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return self.messages.count
}

func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool
{
let message = self.messages[indexPath.row]
return message.isEditable
}
}

在一些更复杂的示例中,它可能是一个计算属性,但总体概念是相同的。

关于swift - 是否可以以编程方式禁用 commitEditingStyle?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29110497/

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