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

时间:2018-01-01 11:12:09

标签: ios json swift uitableview swift4

我有一个tableview,显示来自存储在数组var lastDayChange = [String]()中的JSON的数据,如果结果在0(如-1或-2等)和绿色下,我想让标签文本颜色为红色如果结果高于0(如1或2等);如下图所示:

code segment

我在同一个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()
}

4 个答案:

答案 0 :(得分:6)

你可以这样在cell.lastDayChange.textColor = Float(lastDayChange[indexPath.row])! >= 0 ? .green : .red 内完成:

lastDayChange

首先,您在indexPath获取String项,然后将其从Int转换为; [^ = Ctrl] [+ = Shift] [! = Alt] [# = Win] f5:: RunWait "C:\test.txt" send !{space}m send {left} Mousemove 500,250 MouseClick left,0,0 return ,并根据该值设置标签颜色项目

答案 1 :(得分:0)

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

ArrayList<String> list = new ArrayList<>();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");

        for(int i=0;i<list.size();i++) {
            Log.d("Removed+++++++++++","++++"+list.remove(i));
           // queue.remove();
        }

答案 2 :(得分:0)

CellForAt 中添加以下代码行

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

答案 3 :(得分:0)

你可以在tableView(_:cellForRowAt :)中执行:

if(lastDayChange[indexPath.row] >= 0){

 cell.lastDayChange.textColor = UIColor.green
} else {

 cell.lastDayChange.textColor = UIColor.red
}

希望它的工作......