Невозможно изменить шрифт текста для l oop с данными из возвращенного массива в Swift - PullRequest
0 голосов
/ 03 августа 2020

Я хочу изменить цвет шрифта с помощью оператора «if», если он соответствует этим критериям. Я пробовал NSAttributedString и NSMutableAttributedString, но не могу найти ничего, что могло бы выполнить sh то, что я хочу сделать. Я использую оператор печати, чтобы показать, что для l oop верно. Данные для каждого возвращенного массива: 2018, 2018, 3010, 3010, 3614, 3614, 1816, 1816, 1812 и 1812. Причина повторяющихся чисел в том, что на каждой оси по 2 шины. Данные разбиты на две части: первые две цифры обозначают неделю, а вторые две цифры - год изготовления шины. Спасибо за предоставленную помощь. Мой код выглядит следующим образом:

func updateDOTCodes() {
    let date = Date()
    let dateFormatter = DateFormatter()
    
    var myDOTTFArray: [String] {
        return [classALFDOTNumber.text!, classARFDOTNumber.text!, classALRDualOutsideDOTNumber.text!, classARRDualOutsideDOTNumber.text!, classALRDualInsideDOTNumber.text!, classARRDualInsideDOTNumber.text!, classALRDualOutsideTagAxleDOTNumber.text!, classARRDualOutsideTagAxleDOTNumber.text!, classALRDualInsideTagAxleDOTNumber.text!, classARRDualInsideTagAxleDOTNumber.text!]
    }
    
    for counter in 0...myDOTTFArray.count-1 {
        let myString = myDOTTFArray[counter]
        
        if myString != "" {
            
            dateFormatter.dateFormat = "YY"
            let yearString = Int(dateFormatter.string(from: date))
            let startIndex = myString.index(myString.startIndex, offsetBy: 2)
            let endIndex = myString.index(myString.endIndex, offsetBy: -2)
            
            let tireWeek = Int(String(myString.prefix(upTo: startIndex)))
            let tireYear = Int(String(myString.suffix(from: endIndex)))
            
            if currentWeek >= tireWeek! && yearString! - 5 <= tireYear! {
                print(myString + " Green")
            }
            
            if currentWeek <= tireWeek! && yearString! - 5 >= tireYear! && yearString! - 7 <= tireYear! {
                print(myString + " Yellow")
                // Insert code here to change myString text to Orange as Yellow does not display well
            }
            
            if currentWeek >= tireWeek! &&  yearString! - 7 >= tireYear! {
                print(myString + " Red")
                // Insert code here to change myString text to red
            }
        }
    }
}

Ответы [ 2 ]

0 голосов
/ 03 августа 2020

Вместо значений text выполняется итерация экземпляров UITextField и установка цвета текста, если текстовое поле соответствует

func updateDOTCodes() {
    let date = Date()
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "YY"
    
    var myDOTTFArray: [UITextField] {
        return [classALFDOTNumber, classARFDOTNumber, classALRDualOutsideDOTNumber, classARRDualOutsideDOTNumber, classALRDualInsideDOTNumber, classARRDualInsideDOTNumber, classALRDualOutsideTagAxleDOTNumber, classARRDualOutsideTagAxleDOTNumber, classALRDualInsideTagAxleDOTNumber, classARRDualInsideTagAxleDOTNumber]
    }
    
    for textField in myDOTTFArray {
        
        if let myString = textField.text, !myString.isEmpty,
           let tireWeek = Int(myString.prefix(2)),
           let tireYear = Int(myString.suffix(2)) { 
          
            let yearString = Int(dateFormatter.string(from: date))!
    
            
            if currentWeek >= tireWeek && yearString - 5 <= tireYear {
                textField.textColor = .systemGreen
            }
            
            if currentWeek <= tireWeek && yearString - 5 >= tireYear && yearString - 7 <= tireYear {
                textField.textColor = .systemOrange
            }
            
            if currentWeek >= tireWeek &&  yearString - 7 >= tireYear {
                textField.textColor = .systemRed
            }
        }
    }
}
0 голосов
/ 03 августа 2020

Попробуйте изменить textColor на этикетке, на которой отображается текст, вместо String:

label.textColor = .green
...