これは私を完全に狂わせています。
NSFetchedResultsControllerを介してセルが入力されたUITableViewがあり、コアデータパラメーターの1つに基づいて背景色が設定されている必要があります。
このテーブルビューはUISplitViewControllerのマスタービューにあり、詳細ビューに何が表示されているかを示すために、選択したセルを視覚的に選択したままにする必要があります。
他のいくつかのStackOverflowの質問からのガイダンスに基づいて、セルを構成する理想的な場所は、次のような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の背後で背景色が無視されることがあります(場合によっては?!?)。または、選択中にセルが正しく表示されないようにします。または、チェックマークインジケータを背景色なしで表示します。または、新しいアイテムをコアデータデータベースに追加してテーブルに表示しますが、セルの背景色はありませんが、テキストラベルには背景色があります。
私が何をしても、特にセルがプログラムで選択されている場合に、物事が全体的に期待どおりに動作するようにするためのシンプルで直感的な方法を見つけられませんでした。
実際、セルの選択が問題の根本にあるように思われます。選択されたセルは通常、選択を別のセルに変更した後、特にセルの選択中にセルの色が変更された場合に、誤って描画されるセルです。
これがどのように機能するかについて、どこかに例はありますか?!?!
ありがとう!