如何更改表格视图中的标签文本颜色(存储在数组中的数据)
Posted
技术标签:
【中文标题】如何更改表格视图中的标签文本颜色(存储在数组中的数据)【英文标题】:How to change label text color in tableview (data stored in an array) 【发布时间】:2018-01-01 11:12:09 【问题描述】:我有一个表格视图,它显示来自存储在数组 var lastDayChange = [String]()
中的 JSON 的数据,如果结果低于 0(如 -1 或 -2 等),我想让标签文本颜色为红色,如果结果高于 0(如 1 或 2 等);如下图:
我在同一个 ViewController.swift 文件中创建这个类:
struct Coin: Codable
let symbol : String
let price_usd : String
let percent_change_24h : String
这是我的表格视图:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = tableView.dequeueReusableCell(withIdentifier: "BitcoinTableViewCell", for: indexPath) as! BitcoinTableViewCell
let lineNumbers = Array(1...200)
cell.lineNumberLable.text = " \(lineNumbers[indexPath.row]) -"
cell.coinNameLable.text = sympolsCoin[indexPath.row]
cell.priceLable.text = "$" + priceUSDcoin[indexPath.row]
cell.lastDayChange.text = lastDayChange[indexPath.row] + "%"
//cell.coinLogoImage.image = UIImage(named : cryptoCurrencyImage[indexPath.row])
return cell
还有这个带有数组保存数据的json:
var coins = [Coin]()
var sympolsCoin = [String]()
var priceUSDcoin = [String]()
var lastDayChange = [String]()
func getCoinData()
let jsonURL = "https://api.coinmarketcap.com/v1/ticker/"
let url = URL(string: jsonURL)
URLSession.shared.dataTask(with: url!) (data, response, error) in
do
self.coins = try JSONDecoder().decode([Coin].self, from: data!)
for info in self.coins
self.sympolsCoin.append(info.symbol)
self.priceUSDcoin.append(info.price_usd)
self.lastDayChange.append(info.percent_change_24h)
DispatchQueue.main.async
self.coinTableView.reloadData()
//self.coinTableView.reloadData()
catch
print("Error is : \n\(error)")
.resume()
【问题讨论】:
可以分享项目。我会直接在你的项目中实现。 【参考方案1】:你可以这样在tableView(_:cellForRowAt:)
里面做:
cell.lastDayChange.textColor = Float(lastDayChange[indexPath.row])! >= 0 ? .green : .red
首先,您在indexPath
处获取lastDayChange
的项目并将其从String
转换为Int
,并根据该项目的值设置标签颜色。
【讨论】:
错误:二元运算符“>=”不能应用于“Int”类型的操作数?和“诠释” 我更新了我的答案,你需要解开投射结果。 错误:线程 1:致命错误:在展开可选值时意外发现 nil 所以您的lastDayChange
数组包含无法转换为Int
的字符串。
我的数组只有数字!【参考方案2】:
你可以通过这个属性改变UILabel对象的文字颜色。
cell.priceLable.textColor = .red
【讨论】:
请阅读问题,他要求更改lastDayChange
颜色而不是priceLable
colour
josh gray 请仔细阅读问题然后回答。谢谢。【参考方案3】:
你可以在 tableView(_:cellForRowAt:) 里面做:
if(lastDayChange[indexPath.row] >= 0)
cell.lastDayChange.textColor = UIColor.green
else
cell.lastDayChange.textColor = UIColor.red
希望它的工作......
【讨论】:
【参考方案4】:在 CellForAt 中添加以下代码行
if lastDayChange[indexPath.row] > 0
cell.lastDayChange.textColor = .green
else
cell.lastDayChange.textColor = .red
【讨论】:
错误:二元运算符“>”不能应用于“字符串”类型的操作数 OK 所以 lastDayChange 是字符串。所以你必须将字符串转换为双精度。 if(Double(lastDayChange[indexPath.row] )> 0) cell.lastDayChange.textColor = UIColor.green else cell.lastDayChange.textColor = UIColor.red以上是关于如何更改表格视图中的标签文本颜色(存储在数组中的数据)的主要内容,如果未能解决你的问题,请参考以下文章
如何延迟更改 tableView 中的 UILabel 文本