Нахождение UIView, который прокручивает UITableView - PullRequest
2 голосов
/ 19 апреля 2009

Я пытаюсь получить UIView, который прокручивает UITableView, если прокрутка включена. Как правило, фон белый, и если вы выдвинете UITableView за его пределы, вы увидите фон. Я пытаюсь установить этот фон в UIColor из blackColor. Я не могу найти подходящий для тега. Я попробовал следующий код в моем UIViewController:

- (void)loadView 
{
    [super loadView];
    UITableView *aTableView = 
        [[[UITableView alloc] 
            initWithFrame:self.view.bounds
            style:UITableViewStylePlain] autorelease];

    [aTableView setScrollEnabled:YES];
    [self.view setBackgroundColor:[UIColor blackColor]];
    [self.view addSubview:aTableView];
    self.tableView = aTableView;
}  

Цвет по-прежнему остается белым. Кажется, я попал в неправильный UIView.

Есть идеи? Спасибо.

Ответы [ 3 ]

0 голосов
/ 21 апреля 2009

Мне удалось добиться того, чего вы хотите, но для меня это выглядит как обходной путь (возможно, в библиотеках есть ошибка).

Во-первых, вам нужно установить для свойства backgroundColor черный цвет в UITableView.

Затем, когда вы создаете новую UITableViewCell, вам нужно сделать что-то вроде этого (этот код поступает в источник данных UITableView):

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *MyIdentifier = @"MyIdentifier";

    // Try to retrieve from the table view a now-unused cell with the given identifier
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:MyIdentifier];

    // If no cell is available, create a new one using the given identifier
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:MyIdentifier] autorelease];
    }
    cell.contentView.backgroundColor = [UIColor whiteColor];

    UILabel *label = [[[UILabel alloc] initWithFrame:CGRectMake(0.0, 0.0, 60, 20)] autorelease];
    label.text = @"test";
    label.textColor = [UIColor blackColor];
    [cell.contentView addSubview:label];
    cell.textColor = [UIColor blackColor];

    return cell;
}

Вы должны установить белый цвет фона contentView, но когда вы это сделаете, текст ячейки перестанет появляться, поэтому вам нужно добавить UILabel в представление содержимого и написать текст самостоятельно.

Кажется излишним просто менять цвет фона, но, возможно, есть ошибка, которая не позволяет установить другой цвет фона на UITableViewCell, чем на содержащем его UITableView.

0 голосов
/ 28 января 2010

Хм .. Я запускаю похожую проблему, устанавливая цвет фона ячейки в методе cellForRowAtIndexPath Решением было установить цвет фона в методе обратного вызова willDisplayCell.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath
{
   cell.backgroundColor = (indexPath.row % 2 == 0) ? DARK_BACKGROUND : LIGHT_BACKGROUND;
}
0 голосов
/ 19 апреля 2009

У меня нет решения, но у меня есть предложение. Вы пытались сделать фоновый цвет UITableView прозрачным и установить цвет суперпредставления на белый?

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