如果 Swift 3/Xcode 8 中的“活动”列是“否”,如何隐藏单元格
Posted
技术标签:
【中文标题】如果 Swift 3/Xcode 8 中的“活动”列是“否”,如何隐藏单元格【英文标题】:How to hide cell if "active" column is "no" in Swift 3/Xcode 8 【发布时间】:2017-01-28 22:38:25 【问题描述】:我正在将原型应用程序放在 Swift 3.0 中。
此时,所有 API 信息都被解析到表格单元格中。我希望做的是介绍一个工具,如果我将数据库中的“活动”列设置为“否”,那么如何防止该单元格显示在表格视图中?
目前的代码是这样的:
func configure(offence: Offence)
if let name = offence.name, let act = offence.act
self.textLabel?.text = name
self.detailTextLabel?.text = act
我尝试过使用 if/else 语句,但运气不佳。
【问题讨论】:
你能再显示一些代码吗?你有一个Offence
对象数组,用作tableview 的数据源?
【参考方案1】:
如果您的Offence
s 有一个active
属性,您可以使用它来过滤您的服务器响应,并且只显示那些将active
属性设置为true
的响应。像这样:
struct Offence
var name: String
var active: Bool
class YourViewController: UITableViewController
// all the offences you get from the server
let offences: [Offence] = []
// only the active offences - use those as your datasource!
var visibleOffences: [Offence]
return offences.filter $0.active
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return visibleOffences.count
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "YourCell", for: indexPath)
cell.textLabel?.text = visibleOffences[indexPath.row].name
return cell
【讨论】:
您最好在offences
上使用didSet
观察者将visibleOffences
设置一次,以避免在每次调用visibleOffences
时对其进行过滤
或在 YourViewController 中保持登录不变,在设置攻击时使用过滤器:myViewController.offences = myOriginalOffencesFromDatabase.filter$0.active
@muescha:还有其他方法,是的!以上是关于如果 Swift 3/Xcode 8 中的“活动”列是“否”,如何隐藏单元格的主要内容,如果未能解决你的问题,请参考以下文章
Swift 3、Xcode 8 中的 UINavigationController
swift 3 Xcode 8 中的 NSManagedObject 和 CoreData
无法正确地自动调整自动布局和堆栈视图(Swift 3、Xcode 8)
尝试呈现其视图不在窗口层次结构中的 UIAlertController (Swift 3/Xcode 8)