0

Core Dataを介していくつかのオブジェクトをプルしNSFetchedResultsController、ブールプロパティの1つに基づいて条件付き書式を適用しようとしています。Likedたとえば、テキストの色を青にしたいとしてマークされている場合。

私が見つけた問題は、テーブルをスクロールすると、色が付いLikedているものだけではないということです。YESこれも規則的なパターンです。たとえば、下にスクロールすると6エントリごとになります。セルのキューイングと再利用と関係があると思いますが、どうなるかわかりません。これが私のコードです:

- (UITableViewCell *) tableView: (UITableView *) tableView cellForRowAtIndexPath: (NSIndexPath *) indexPath
{
    static NSString *CellIdentifier = @"Cell";
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier: CellIdentifier forIndexPath: indexPath];

    Quote *thisQuote = [self.fetchedResultsController objectAtIndexPath: indexPath];

    cell.textLabel.numberOfLines = 4;
    cell.textLabel.font = [UIFont boldSystemFontOfSize: 12];
    cell.textLabel.textAlignment = NSTextAlignmentCenter;
    cell.textLabel.text = [[self.fetchedResultsController objectAtIndexPath: indexPath] quote];

    if ([[thisQuote isLiked] boolValue]) {
        cell.textLabel.textColor = [UIColor blueColor];
    }

    return cell;
}
4

2 に答える 2

2

を使用しdequeueReusableCellWithIdentifier:ているため、すべてのセルのプロパティ textColor をリセットする必要があります。

if ([[thisQuote isLiked] boolValue]) {
    cell.textLabel.textColor = [UIColor blueColor];
}
else cell.textLabel.textColor = [UIColor blackColor];
于 2013-02-26T13:22:28.240 に答える
0

6 番目のセルごとに、いつでも次のことができます。

if(indexPath.row % 6 == 0) {
    // Set blue color
}
else {
   // Set black color
}

または簡単:

cell.textLabel.textColor = (indexPath.row % 6 == 0) ? [UIColor blueColor] : [UIColor blackColor];
于 2013-02-26T13:24:16.233 に答える