swift – 是否可以通过编程方式禁用commitEditingStyle?
发布时间:2020-12-14 04:43:55 所属栏目:百科 来源:网络整理
导读:在我的tableview中,我只希望某些单元格能够根据条件向左拖动某些选项.其他单元格的行为应该像是禁用了commitEditingStyle.这可能吗? 使用下面的代码,我可以在满足条件时添加操作,但其他单元格仍然可以获得默认的“删除”操作.如何摆脱删除操作? override f
在我的tableview中,我只希望某些单元格能够根据条件向左拖动某些选项.其他单元格的行为应该像是禁用了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 } 使用下面的代码,我设法启用和禁用操作.但只能使用“删除”按钮. 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方法.您的视图控制器应如下所示: 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 } } 在一些更复杂的例子中,它可能是计算属性,但整体概念是相同的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- Ajax之二 Ajax基础
- c# – 字符串类Replace和Stringbuilder替换
- IIS下调用证书出现异常的解决方法 (C#)
- 工作记录:不定宽度展开收起卡片
- cocos2dx的clippingNode功能在android测试无效解决方法
- 《Python Web开发》作者Harry Percival:TDD就是微小而渐进
- 把JSONCPP编译成静态库.lib形式
- 如何使用XML对Spring Security Oauth2启用/ oauth / check_
- vue.extend实现alert模态框弹窗组件
- Parsed configuration file: 'class path resource [Co