突出显示 tableview 单元格中的最高数字
Highlight the highest number in tableview cell
我有一个简单的 table视图,其中包含单元格中的数字。一个单元格 - 一个数字。如果单元格编号是其他 table 视图单元格编号中最高的,我想将单元格文本设为粗体。
例如,我有一个 table带有数字的视图:
我需要将第 99 个单元格文本加粗,因为 99 是所有 table 视图单元格中的最大数字。如何做到这一点?
我的数据源数组:
class Exercise: NSObject, Codable {
var name = ""
var reps = [Count]()
}
class Count: NSObject, Codable {
var reps: Double
var date = Date()
init(reps: Double) {
self.reps = reps
super.init()
}
}
还有我的代码:
class Counts: UITableViewController, CountsDetailViewControllerDelegate {
var countExercise: Exercise!
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return countExercise.reps.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Count", for: indexPath)
let item = countExercise.reps[indexPath.row]
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .short
cell.textLabel?.text = item.reps.removeZerosFromEnd()
cell.detailTextLabel?.text = formatter.string(from: item.date)
return cell
}
使您的计数确认为 Comparable
class Count: NSObject, Codable, Comparable {
static func < (lhs: Count, rhs: Count) -> Bool {
lhs.reps < rhs.reps
}
var reps: Double
var date = Date()
init(reps: Double) {
self.reps = reps
super.init()
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Count", for: indexPath)
let item = countExercise.reps[indexPath.row]
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .short
if let count = countExercise.reps.max(),
count.reps == item.reps {
cell.textLabel?.font = UIFont.boldSystemFont(ofSize: 26)
} else {
cell.textLabel?.font = UIFont.systemFont(ofSize: 26)
}
cell.textLabel?.text = item.reps.removeZerosFromEnd()
cell.detailTextLabel?.text = formatter.string(from: item.date)
return cell
}
希望对你有帮助
您可以将 属性 添加到视图控制器以跟踪数组中所有 Count
对象中最高的 reps
计数:
var highestRep: Double? {
// We can map over all reps to "extract" each individual `reps` count.
// This leaves us with an array of `Double` values. We can then call
// `max()` on it to get the highest value:
return countExercise.reps.max{ [=10=].reps < .reps }?.reps
}
// Now that we know which is the highest number, you can format
// your cell's text accordingly, when setting up your cell:
if highestRep == item.reps {
// Bold text
} else {
// Regular text
}
max()
方法 return 是一个 Optional
值,所以这就是为什么新的 属性 是 Double?
类型的原因。如果你有一个空数组,它将 return nil
.
我有一个简单的 table视图,其中包含单元格中的数字。一个单元格 - 一个数字。如果单元格编号是其他 table 视图单元格编号中最高的,我想将单元格文本设为粗体。
例如,我有一个 table带有数字的视图:
我需要将第 99 个单元格文本加粗,因为 99 是所有 table 视图单元格中的最大数字。如何做到这一点?
我的数据源数组:
class Exercise: NSObject, Codable {
var name = ""
var reps = [Count]()
}
class Count: NSObject, Codable {
var reps: Double
var date = Date()
init(reps: Double) {
self.reps = reps
super.init()
}
}
还有我的代码:
class Counts: UITableViewController, CountsDetailViewControllerDelegate {
var countExercise: Exercise!
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return countExercise.reps.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Count", for: indexPath)
let item = countExercise.reps[indexPath.row]
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .short
cell.textLabel?.text = item.reps.removeZerosFromEnd()
cell.detailTextLabel?.text = formatter.string(from: item.date)
return cell
}
使您的计数确认为 Comparable
class Count: NSObject, Codable, Comparable {
static func < (lhs: Count, rhs: Count) -> Bool {
lhs.reps < rhs.reps
}
var reps: Double
var date = Date()
init(reps: Double) {
self.reps = reps
super.init()
}
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Count", for: indexPath)
let item = countExercise.reps[indexPath.row]
let formatter = DateFormatter()
formatter.dateStyle = .short
formatter.timeStyle = .short
if let count = countExercise.reps.max(),
count.reps == item.reps {
cell.textLabel?.font = UIFont.boldSystemFont(ofSize: 26)
} else {
cell.textLabel?.font = UIFont.systemFont(ofSize: 26)
}
cell.textLabel?.text = item.reps.removeZerosFromEnd()
cell.detailTextLabel?.text = formatter.string(from: item.date)
return cell
}
希望对你有帮助
您可以将 属性 添加到视图控制器以跟踪数组中所有 Count
对象中最高的 reps
计数:
var highestRep: Double? {
// We can map over all reps to "extract" each individual `reps` count.
// This leaves us with an array of `Double` values. We can then call
// `max()` on it to get the highest value:
return countExercise.reps.max{ [=10=].reps < .reps }?.reps
}
// Now that we know which is the highest number, you can format
// your cell's text accordingly, when setting up your cell:
if highestRep == item.reps {
// Bold text
} else {
// Regular text
}
max()
方法 return 是一个 Optional
值,所以这就是为什么新的 属性 是 Double?
类型的原因。如果你有一个空数组,它将 return nil
.