I am trying to change the background color of certain UILabels based on the value of one of the labels.
I have 6 labels and if the value of one of the labels ie. type_BG is “Fasting” then the background of all other labels will become yellow.
To do this I constructed a custom function called “Background_Color.” It is here where the codes to changing the background color of the labels takes place. Something like :
if cell.type_BG.text == “Fasting”{
cell.type_BG.backgroundColor = UIColor.yellow
cell.read_BG.backgroundColor = UIColor.yellow
cell.read_index.backgroundColor = UIColor.yellow
…. and so on.
}
When I run the codes, nothing happen. I believe the way I reference the cell pointing to the label is wrong. If so how should I correct it?
Thank you in advance.
My codes :
import UIKit
import CoreData
class BGTest008VC: UIViewController, UITableViewDelegate,UITableViewDataSource, NSFetchedResultsControllerDelegate {
@IBOutlet var tableView008 : UITableView!
var BGTest008: [BGTest008Class] = []
var TV_cell = VKTestTableViewCell()
@IBOutlet var BGtest008VC : UITableView!
var fetchResultController: NSFetchedResultsController<BGTest008Class>!
var recordCount1 : Int = 0
var x : String = ""
var indexPath_X : IndexPath = IndexPath.init(row: 0, section: 0)
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
DispatchQueue.main.async {
// self.tableView.reloadData()
self.tableView008.reloadData()
}
}
override func viewDidLoad() {
print(FileManager.default.urls(for: .documentDirectory, in: .userDomainMask))
super.viewDidLoad()
// 2) Declare an instance variable for fetch result controller
let fetchRequest: NSFetchRequest<BGTest008Class> = BGTest008Class.fetchRequest()
// 3) Deploy Standdard codes
let sortDescriptor = NSSortDescriptor(key: "index_BG", ascending: true)
fetchRequest.sortDescriptors = [sortDescriptor]
if let appDelegate = (UIApplication.shared.delegate as? AppDelegate) {
let context = appDelegate.persistentContainer.viewContext
//Initialize the fetchResultController
fetchResultController = NSFetchedResultsController(
fetchRequest: fetchRequest,
managedObjectContext: context,
sectionNameKeyPath:nil, cacheName: nil)
fetchResultController.delegate = self
do{
try fetchResultController.performFetch()
if let fetchedObjects = fetchResultController.fetchedObjects{
BGTest008 = fetchedObjects
}
} catch {
print(error)
}
}
self.tableView008.delegate = self
self.tableView008.dataSource = self
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return BGTest008.count
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cellIdentifier = "BGTest008"
let cell = tableView008.dequeueReusableCell(withIdentifier: cellIdentifier, for: indexPath) as! VKTestTableViewCell
if let date_vk = BGTest008[indexPath.row].date_BG{
let date_Format = DateFormatter()
date_Format.dateFormat = "yyy-mm-dd hh:mm a"
let date_Format_Print = DateFormatter()
date_Format_Print.dateFormat = "EEE, dd-MMM"
let date_label = date_Format_Print.string(from: date_vk)
cell.date_BG.text = date_label
}
if let time_vk = BGTest008[indexPath.row].time_BG{
let time_Format = DateFormatter()
time_Format.dateFormat = "yyy-mm-dd hh:mm a"
time_Format.timeZone = TimeZone(secondsFromGMT: 0)
let time_to_str = time_Format.string(from: time_vk)
let date_to_str = time_Format.date(from: time_to_str)
time_Format.dateFormat = "hh:mm:a"
let time_back_to_string = time_Format.string(from: date_to_str!)
let time_label = time_back_to_string
cell.time_BG.text = time_label
}
let index_vk = BGTest008[indexPath.row].index_BG
cell.index_BG.text = "\(String(describing: index_vk))"
let BG_level = BGTest008[indexPath.row].read_BG
cell.read_BG.text = "\(String(describing: BG_level))"
let type_BG = BGTest008[indexPath.row].type_BG
if let type_BG1 = type_BG{
cell.type_BG.text = "\(String(describing: type_BG1))"
if cell.type_BG.text == "Fasting"{
Background_Color()
}else {
print("cell is not Fasting")
// cell.type_BG.text = ""
}
}
return cell
}
func Background_Color(){
print("fasting 2")
let indexPath = indexPath_X
let cell = tableView008.dequeueReusableCell(withIdentifier: "BGTest008", for: indexPath) as! VKTestTableViewCell
cell.type_BG.backgroundColor = UIColor.yellow
cell.index_BG.backgroundColor = UIColor.yellow
cell.date_BG.backgroundColor = UIColor.yellow
cell.time_BG.backgroundColor = UIColor.yellow
cell.notes_BG.backgroundColor = UIColor.yellow
cell.read_BG.backgroundColor = UIColor.yellow
print("cell = Fasting")
}
func getRecordsCount() {
let fetchRequest = NSFetchRequest<NSFetchRequestResult>(entityName: "BGTest008")
if let appDelegate = (UIApplication.shared.delegate as? AppDelegate) {
let context = appDelegate.persistentContainer.viewContext
do {
let recordCount = try context.count(for: fetchRequest)
self.recordCount1 = recordCount
print("recordCount = ", recordCount)
} catch {
print(error.localizedDescription)
}
}
}
}