Ios 如何更改tableview中的标签文本颜色(存储在数组中的数据)

Ios 如何更改tableview中的标签文本颜色(存储在数组中的数据),ios,json,swift,uitableview,swift4,Ios,Json,Swift,Uitableview,Swift4,我有一个tableview,它显示了来自JSON的数据,JSON存储在数组var lastDayChange=[String]()中,如果结果在0下(如-1或-2等),则标签文本颜色为红色,如果结果在0上(如1或2等),则标签文本颜色为绿色;如下图所示: 我在同一个ViewController.swift文件中创建了此类: struct Coin: Codable { let symbol : String let price_usd : String let percent_change_2

我有一个tableview,它显示了来自JSON的数据,JSON存储在数组
var lastDayChange=[String]()
中,如果结果在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()
}

您可以在
tableView(u:cellForRowAt:)
中这样做:

cell.lastDayChange.textColor = Float(lastDayChange[indexPath.row])! >= 0 ? .green : .red

首先,在
indepath
中获取
lastDayChange
项,并将其从
String
转换为
Int
,然后根据该项的值设置标签颜色。

您可以在
表视图(:cellForRowAt:)
中这样做:

cell.lastDayChange.textColor = Float(lastDayChange[indexPath.row])! >= 0 ? .green : .red

首先,在
indepath
中获取
lastDayChange
项,并将其从
String
转换为
Int
,然后根据该项的值设置标签颜色。

可以通过此属性更改UILabel对象的文本颜色

cell.priceLable.textColor = .red

您可以通过此属性更改UILabel对象的文本颜色

cell.priceLable.textColor = .red

CellForAt中添加以下代码行

if lastDayChange[indexPath.row] > 0 {
    cell.lastDayChange.textColor = .green
} else {
    cell.lastDayChange.textColor = .red
}

CellForAt中添加以下代码行

if lastDayChange[indexPath.row] > 0 {
    cell.lastDayChange.textColor = .green
} else {
    cell.lastDayChange.textColor = .red
}

您可以在tableView中执行此操作(u:cellForRowAt:):


希望这是工作…

您可以在tableView中完成它(\uu:cellForRowAt:):



希望它能工作…

错误:二进制运算符'>='不能应用于'Int'和'Int'类型的操作数我更新了答案,您需要展开强制转换结果。错误:线程1:致命错误:在展开可选值时意外发现零,因此您的
lastDayChange
数组包含无法强制转换为
Int
的字符串。我的数组只有数字!错误:二进制运算符“>=”不能应用于“Int”和“Int”类型的操作数。我更新了答案,您需要展开强制转换结果。错误:线程1:致命错误:在展开可选值时意外发现零,因此您的
lastDayChange
数组包含无法强制转换为
Int
的字符串。我的数组只有数字!可以共享该项目。我将直接在您的项目中实施。有可能共享该项目。我将直接在您的项目中实现。错误:二进制运算符'>'不能应用于'String'类型的操作数,因此lastDayChange是String。所以必须将字符串转换为双精度。如果(Double(lastDayChange[indexPath.row])>0{cell.lastDayChange.textColor=UIColor.green}或者{cell.lastDayChange.textColor=UIColor.red}错误:二进制运算符'>'不能应用于'String'类型的操作数,所以lastDayChange是String。所以必须将字符串转换为双精度。如果(Double(lastDayChange[indexPath.row])>0{cell.lastDayChange.textColor=UIColor.green}或者{cell.lastDayChange.textColor=UIColor.red}请仔细阅读问题,他要求更改
lastDayChange
color not
priceLable
colorJosh grey请仔细阅读问题,然后回答。谢谢。请仔细阅读问题,他要求更改
lastDayChange
color not
priceLable
color乔希·格雷请仔细阅读问题,然后回答。谢谢你。