這讓我絕對瘋了。基於NSFetchedResultsController的UITableViewCell背景顏色 - 奇怪的問題
我有一個UITableView單元格填充通過NSFetchedResultsController應該有他們的背景顏色設置基於其中一個核心數據參數。
此表視圖位於UISplitViewController的主視圖中,並且所選單元格需要保持可見狀態,以指示在詳細視圖中顯示的內容。
基於來自其他幾個堆棧溢出問題的指導,我已經瞭解到,可以將單元配置的理想場所是willDisplayCell代表通話過程中,像這樣:
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath {
WorkTask *workTask = (WorkTask*) [self.fetchedResultsController objectAtIndexPath:indexPath];
if ([workTask.strStatus isEqualToString:@"A"]) {
cell.backgroundColor = [self colorWithHexString:@"fffdcf"];
// cell.textLabel.backgroundColor = [self colorWithHexString:@"fffdcf"];
// cell.detailTextLabel.backgroundColor = [self colorWithHexString:@"fffdcf"];
} else if ([workTask.strStatus isEqualToString:@"B"]) {
cell.backgroundColor = [self colorWithHexString:@"cfffd1"];
// cell.textLabel.backgroundColor = [self colorWithHexString:@"cfffd1"];
// cell.detailTextLabel.backgroundColor = [self colorWithHexString:@"cfffd1"];
} else if ([workTask.strStatus isEqualToString:@"C"]) {
cell.backgroundColor = [self colorWithHexString:@"ffcfcf"];
// cell.textLabel.backgroundColor = [self colorWithHexString:@"ffcfcf"];
// cell.detailTextLabel.backgroundColor = [self colorWithHexString:@"ffcfcf"];
} else {
cell.backgroundColor = [self colorWithHexString:@"ffffff"];
// cell.backgroundColor = cell.contentView.backgroundColor;
}
這主要類型的作品。但是...
根據我如何使用不同的變體完成此操作,我最終會忽略textLabel和detailTextLabel後面的背景顏色(有時只是?!?)。或者在選中時導致單元顯示不正確。或者在沒有背景顏色的情況下顯示覆選標記指示器。或者將新項目添加到表格中顯示的核心數據庫中,但是單元格沒有背景顏色,但文本標籤具有背景顏色。
無論我做什麼,我都沒有找到一種簡單而直觀的方式來使事情的行爲與預期的一樣 - 特別是當程序選擇單元格時。
實際上 - 單元選擇看起來可能是問題的根源。選中的單元格通常是在將選區更改爲另一個區域後最終繪製不正確的單元格,特別是在選中單元格時單元格顏色發生更改的情況下。
有沒有什麼地方有這個應該如何工作的地方?!?!
謝謝!
你試過分配一個'cell.selectedBackgroundView'和'cell.backgroundView'嗎?這似乎解決了與細胞選擇有關的許多問題。 – Raspu
我將覆蓋'-setHighlighted:'(在您的單元格子類中) – nielsbot