2017-12-31 368 views
0

alarmLevel!= "0"の値の場合、セル内のラベル(またはラベル)の色を変更しようとしています。これは私がこれまで行ってきたことで、if文を満たすセルの代わりに、すべてのセルのcell.locationLabelの色を変更しています。私はindexPathと関係があると確信していますが、私はそれを理解できません。テキストを変更するifステートメントを使用してセル内のラベルの色を変更する

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = myTableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! ViewControllerTableViewCell 
    cell.locationLabel.text = eventsList[indexPath.row].location 
    cell.eventTimeLabel.text = eventsList[indexPath.row].dateTime 
    cell.eventTypeLabel.text = eventsList[indexPath.row].agencyEventSubtypeCode 
    cell.agencyIdLabel.text = eventsList[indexPath.row].agencyId 

    if alarmLevel != "0" { 
     cell.locationLabel.textColor = UIColor.red 
    } else { 
     cell.locationLabel.textColor = UIColor.black 
    } 
    return cell 
} 
+0

の各event項目のためのあなたの必要性に応じて、この整数値を変更する私たちは、私が警報レベルの唯一のセルのラベルをしたいあなたに – user3601599

+0

を支援するために、あなたの問題を教えてください!= 0の赤であることを。上記のコードは、すべてのセルのラベルを赤色にします。これは、私が望むものではありません。 – jvan

+0

あなたは 'tableView(_:cellForRowAt:)'の実行ごとに同じ 'alarmLevel'値を使用しているようです。他のプロパティと同様に、適切な値を使用することもできます。 – Cristik

答えて

0

あなたは、イベントリストの配列型に整数型変数としてalarmLevelを追加する必要があります。そして配列eventsList

​​
+0

私はalarmLevel変数を持つイベントをクラスに持っています。実際にはStringとして渡されます。 if文をifに変更しましたif eventsList [indexPath.row] .ALarmLevel!= "0" { cell.locationLabel.textColor = UIColor.red } else { cell.locationLabel.textColor = UIColor.black } .. ......しかし今は色が全く変わっていません。 – jvan

+0

クラスや構造体に問題はありません。同じことです。継承できるクラスと構造体番号は同じです。あなたはalarmLevelがあなたのクラスの文字列値だと言いましたが、あなたの必要性に合わせてコードを変更しますが、私は特に整数を使うことを好みます。それは常に数字であり文字は含まれません。配列のeventsListsをループしているときのalarmLevelの値。 –

+0

ループ中にalarmLevel値をコンソールに表示し、値が変更されていることを確認してください。 eventsList配列の各項目で値が同じであれば、テキストの色は変わりません。 –

関連する問題