【发布时间】:2019-11-30 14:39:52
【问题描述】:
我尝试按标签内的数字对 tableViewCells 进行排序,因此标签中包含最高数字的单元格应该排在最后,反之亦然。 我尝试了以下不同的解决方案,但它根本不起作用,它也没有显示任何错误代码
我不知道是只是一个小错误还是完全错误,但如果是这样,我希望你知道一个完全不同的方法来解决它。
表格视图:
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
// download jobs
jobsRef.observe(.value, with: { (snapshot) in
self.jobs.removeAll()
for child in snapshot.children {
let childSnapshot = child as! DataSnapshot
let job = Job(snapshot: childSnapshot)
print(job)
self.jobs.insert(job, at: 0)
}
filterLocation()
self.tableView.reloadData()
})
}
var jobArr = JobTableViewCell.jobDistance!.jobArr
func filterLocation() {
jobArr.sort() { $0.distance.text > $1.distance.text}
}
TableViewCell:
@IBOutlet weak var distance: UILabel!
static var jobDistance: JobTableViewCell?
var jobArr = [JobTableViewCell.jobDistance!.distance.text]
override func layoutSubviews() {
super.layoutSubviews()
JobTableViewCell.jobDistance = self
}
【问题讨论】:
-
最好先对数据源进行排序,然后重新加载tableView
-
我建议不要对单元格进行排序,而是对数据源进行排序。让表格视图负责渲染您的单元格。
-
你在哪里打电话
filterLocation -
@Sh_Khan 我在 viewDidAppear 中调用它,在重新加载 tableview 之前(也用新代码更新了我的问题)
标签: ios swift uitableview uilabel