Выбранный UITableViewCell меняет фон на Scroll - PullRequest
0 голосов
/ 27 апреля 2011

У меня есть UITableView с прозрачным фоновым цветом, каждая из его ячеек имеет собственный фоновый вид и серый стиль выделения.Выделение работает нормально, но когда я выбираю и перетаскиваю табличное представление вверх или вниз, ячейка меняет свой фон на прозрачный, а не на пользовательский.Что я должен искать, чтобы это исправить?

РЕДАКТИРОВАТЬ: Исходный код по просьбе Андре Morujão

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{


    static NSString *CellIdentifier = @"Cell";

    RestaurantInfo *restaurantInfo = [requestBean.restaurantArray objectAtIndex:indexPath.row];


    UITableViewCell *cell = [tableView

                             dequeueReusableCellWithIdentifier:CellIdentifier];




    if (cell == nil) {

        cell = [[[UITableViewCell alloc]

                 initWithStyle:UITableViewCellStyleDefault

                 reuseIdentifier:CellIdentifier] autorelease];

    }
    else {
        cell = nil;

        cell = [[[UITableViewCell alloc]

                 initWithStyle:UITableViewCellStyleDefault

                 reuseIdentifier:CellIdentifier] autorelease];

    }

    [cell setSelectionStyle:UITableViewCellSelectionStyleGray];

    UIImageView *bgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)];
    [bgView setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageNamed:@"table_cell_bg.png"]]];
    [cell setBackgroundView:bgView];


    UILabel *restaurantNameLabel = [[UILabel alloc] initWithFrame:CGRectMake(5, 5, 310, 15)];
    [restaurantNameLabel setFont:[UIFont boldSystemFontOfSize:16]];
    [restaurantNameLabel setText:restaurantInfo.restaurantName];
    [restaurantNameLabel  setBackgroundColor:[UIColor clearColor]];
    [restaurantNameLabel  setUserInteractionEnabled:NO];
    [cell addSubview:restaurantNameLabel];


    return cell;
}

1 Ответ

1 голос
/ 03 мая 2011

Извините, это не обязательно является причиной вашей проблемы, но начните с следующих действий:

  • нет необходимости в блоке else (или вы просто поместили его туда для целей отладки?)
  • этого должно быть достаточно для применения selectionStyle и фона внутри блока if (если вы не меняете их где-то еще)
  • restaurantNameLabel, вероятно, следует добавить к ячейке contentView, а не напрямую как подпредставление
  • вы пропускаете restaurantNameLabel и bgView; добавьте [bgView release] и [restaurantNameLabel release] после того, как вы закончите с ними

Кроме того, вы используете UIImageView по какой-либо конкретной причине? Вероятно, будет достаточно использовать UIView или даже просто применить backgroundColor.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...