2017-12-31 55 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

우리가 나는 알람 레벨의 유일한 셀의 라벨을 원하는 당신에게 – user3601599

+0

을 도울 수 있도록 문제를 설명해주십시오 배열의 각 event 항목에 대한 사용자의 필요에 따라이 정수 값을 변경! = 0 것은 빨간색으로 . 위의 코드는 내가 쓰지 않은 모든 셀의 레이블을 빨간색으로 바꾼다. – jvan

+0

'tableView (_ : cellForRowAt :)'를 실행할 때마다 동일한 'alarmLevel' 값을 사용하는 것처럼 보입니다. 다른 속성과 마찬가지로 적절한 값을 사용할 수도 있습니다. – Cristik

답변

0

당신은 이벤트 목록 배열 유형의 정수 변수로 alarmLevel를 추가해야합니다. 그리고 eventsList

class Events { 
    var location = String() 
    var dateTime = String() 
    var agencyEventSubtypeCode = Int() 
    var agencyId = Int() 
    var alarmLevel = Int() //Need this here 
} 

var eventsList = [Events]() 

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 eventsList[indexPath.row].alarmLevel != 0 { 
    cell.locationLabel.textColor = UIColor.red 
} else { 
    cell.locationLabel.textColor = UIColor.black 
} 
return cell 
} 
+0

나는 alertLevel 변수를 가지고있는 Events 클래스를 가지고있다. 실제로 String으로 온다. if 문을 다음과 같이 변경했습니다. if eventsList [indexPath.row] .ALarmLevel! = "0"{ cell.locationLabel.textColor = UIColor.red else { cell.locationLabel.textColor = UIColor.black } .. ......하지만 이제는 색상이 전혀 변하지 않습니다. – jvan

+0

클래스 나 구조체와 같은 문제는 없습니다. 상속받을 수있는 클래스와 struct no. 당신은 alarmLevel이 당신의 필요에 맞는 코드를 변경할 것이지만 나는 항상 정수가 될 것이고 항상 숫자가 될 것이고 어떤 문자도 포함되지 않을 것을 선호한다고 클래스의 문자열 값이라고 말했다. 배열 eventsLists에서 루핑하는 동안 alarmLevel 값. –

+0

루프 중에 alarmLevel 값을 콘솔에 출력하고 값이 변경되고 있는지 확인하십시오. eventList 배열의 모든 항목에서 값이 동일하면 텍스트 색상이 변경되지 않기 때문입니다. –

관련 문제