2009-04-19 12 views
2

Ich arbeite an dem Versuch, die UIView zu erhalten, die UITableView scrollt, wenn Scrollen aktiviert ist. In der Regel ist der Hintergrund weiß, und wenn Sie den UITableView außerhalb seiner Grenzen verschieben, sehen Sie einen Hintergrund. Ich versuche, diesen Hintergrund zu einem UIColor von blackColor zu setzen. Ich kann nicht das Passende finden. Ich habe den folgenden Code in meinem UIViewController ausprobiert:Auffinden der UIView, die UITableView scrollt über

- (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; 
} 

Die Farbe bleibt immer noch weiß. Scheint, ich treffe die falsche UIView.

Irgendeine Idee? Vielen Dank.

Antwort

0

Ich habe keine Lösung, aber ich habe einen Vorschlag. Haben Sie versucht, die backgroundColor des UITableView transparent zu machen und die Farbe des Superviews auf weiß zu setzen?

+0

Hey Roger, ich möchte nicht, dass die blackColor in meine UITableView eindringt. Ich möchte das normale Styling dafür haben. Ich möchte nur den Hintergrund sehen, wenn der Tisch außerhalb seiner Grenzen gescrollt wird. – Coocoo4Cocoa

0

Ich konnte erreichen, was Sie wollen, aber es sieht wie ein Workaround für mich aus (vielleicht gibt es einen Fehler in den Bibliotheken).

Zuerst müssen Sie die Eigenschaft backgroundColor im UITableView auf schwarz setzen.

Dann, wenn Sie einen neuen UITableViewCell erstellen müssen Sie so etwas wie dies tun (dieser Code geht auf die UITableView der Datenquelle):

- (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; 
} 

Sie haben die Hintergrundfarbe des content auf weiß zu setzen, aber Wenn Sie dies tun, wird der Text der Zelle nicht mehr angezeigt. Daher müssen Sie der Inhaltsansicht ein UILabel hinzufügen und den Text selbst schreiben.

Es scheint Overkill zu sein, nur um eine Hintergrundfarbe zu ändern, aber es gibt wahrscheinlich einen Fehler, der verhindert, dass auf den UITableViewCells eine andere Hintergrundfarbe eingestellt wird als auf seinem UITableView.

0

Hmm .. Ich laufe in einem ähnlichen Problem die Hintergrundfarbe einer Zelle in der CellForRowAtIndexPath-Methode festlegen. Die Lösung war, die Hintergrundfarbe in der Callback-Methode willDisplayCell zu setzen.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    cell.backgroundColor = (indexPath.row % 2 == 0) ? DARK_BACKGROUND : LIGHT_BACKGROUND; 
} 
Verwandte Themen