2009-04-19 1 views
2

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

- (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.

Любая идея? Благодарю.

ответ

0

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

+0

Эй, Роджер, я не хочу, чтобы blackColor просочился в мой UITableView. Мне нужен нормальный стиль. Я просто хочу увидеть фон, когда таблица прокручивается из ее границ. – Coocoo4Cocoa

0

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

Во-первых, вам необходимо установить для свойства 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

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

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    cell.backgroundColor = (indexPath.row % 2 == 0) ? DARK_BACKGROUND : LIGHT_BACKGROUND; 
} 
Смежные вопросы