Цвет фона заголовка раздела изменяется при быстром выборе - PullRequest
0 голосов
/ 14 июля 2020

У меня есть табличное представление с несколькими разделами. У меня два цвета. Белый и синий. Если раздел удовлетворяет требованиям, он должен быть постоянно установлен на синий фон. У меня проблема. Я могу установить цвет фона заголовка раздела, но синий цвет виден только тогда, когда выбран заголовок раздела. Я хотел бы, чтобы все заголовки разделов, удовлетворяющие требованию, были синими, а остальные - белыми. Я попытался найти ответы, но не вижу ни одного вопроса этого типа.

Вот мой код

 //i put all the index of the sections that satisfy this requirement in an array
 if(objModel.getPaidStatus(index:indexPath.section, subIndex: indexPath.row) == "paid") || (objTeacherVewModel.getPaidStatus(index:indexPath.section, subIndex: indexPath.row) == "firstFree"){
           cell.btnDelete.isHidden = true
            cell.containerVew.backgroundColor = #colorLiteral(red: 0.4935901165, green: 0.7977404594, blue: 0.860445559, alpha: 1)
         
            bookedSection =  indexPath.section
            
            bookedArr.append(indexPath.section)
            print(bookedArr)
    }

Ниже я меняю цвет фона заголовка

    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    if(tableView == hrsTblVew){
        return nil
    }
    else{
      
    let headerView = UIView(frame: CGRect(x: 0, y: 0, width: tableView.frame.width-40, height: 40))
    
    let imgView = UIImageView(frame: CGRect(x: 10, y: 10, width: 20, height: 20))
 
    if(selectedSection == section){
        imgView.image = #imageLiteral(resourceName: "uparrow")
    }else{
        imgView.image = #imageLiteral(resourceName: "dropdown")
    }
    headerView.addSubview(imgView)
        print(bookedSection)
        
        for item in bookedArr{
        if( section == item){
                           
            headerView.backgroundColor = #colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)
        
            
            
                       }
            else{
                           
            headerView.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
            }
            
        }
    
    let lbl = UILabel(frame: CGRect(x: 40, y: 0, width: tableView.frame.width-50, height: 40))
    
    let dateFormatter = DateFormatter()
    dateFormatter.dateFormat = "yyyy-MM-dd"
    dateFormatter.locale = Locale(identifier: "en_US_POSIX")
    if let date = dateFormatter.date(from: objModel.getDateString(index: section)){
        
        
        dateFormatter.dateFormat = "EEEE, dd-MM-yyyy"
        
        let dayStr = dateFormatter.string(from: date)
        lbl.text = Utility.shared().getCurrentDay(str:dayStr, currentLang:UserDefaults.standard.object(forKey:"language")as?String ?? "pl-PL")
        
    }
    
    
    lbl.textColor = UIColor.darkGray
    lbl.font = UIFont(name:"Montserrat-SemiBold", size: 16)
    headerView.addSubview(lbl)
    
    
    let btn = UIButton(frame: CGRect(x: 0, y: 0, width: tableView.frame.width, height: 40))
    btn.addTarget(self, action: #selector(headerTapped(sender:)), for: .touchUpInside)
    btn.tag = section + 1
    headerView.addSubview(btn)
        
        
        
    
    return headerView
    }
}

1 Ответ

1 голос
/ 14 июля 2020

Попробуйте это,

func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
    //rest of the code...
    if bookedArr.contains(section) {
        headerView.backgroundColor = #colorLiteral(red: 0.2392156869, green: 0.6745098233, blue: 0.9686274529, alpha: 1)
    } else {
        headerView.backgroundColor = #colorLiteral(red: 1, green: 1, blue: 1, alpha: 1)
    }
    //rest of the code...
    return headerView
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...