2012-03-29 21 views
1

Ich habe benutzerdefinierte UITableViewCells vorher ohne Problem gemacht .. aber ich kann nicht herausfinden, was mit meinem aktuellen Projekt vor sich geht.Warum wird meine benutzerdefinierte UITableViewCell nicht angezeigt?

Hier ist, was ich getan habe ...

  1. CustomCell.h erstellen (Subklassen UITableViewCell)
  2. Erstellen Sie eine leere XIB und ziehen in UITableViewCell. Hintergrund auf Schwarz setzen.
  3. ändern Klasse UITableViewCell in Interface Builder "CustomCell"
  4. Import CustomCell.h in meinem DetailViewController
  5. Ändern tableView:cellForRowAtIndexPath:
static NSString *CellIdentifier = @"Cell"; 

CustomCell *cell = (CustomCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

if (cell == nil) { 
    NSLog(@"DO I GET HERE?"); 
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil]; 
    cell = [topLevelObjects objectAtIndex:0]; 
} 

Ich würde meine Tableview Zellen erwarten als schwarz zu zeigen, ? Aber sie zeigen immer noch als weiß ... irgendwelche Ideen? Vielen Dank!

Update: Ok, stellt sich heraus, es lädt die benutzerdefinierte Zelle ... Ich habe ein UILabel mit etwas weißem Text hinzugefügt. Ich konnte es nicht sehen, aber als ich die Zelle markierte, konnte ich sehen, dass der Text da war. Jetzt stellt sich die Frage, warum ignoriert die Zelle den schwarzen Hintergrund, den ich für die Zelle eingestellt habe?

+0

Müssen Sie nicht auch den Besitzer in IB zu Ihrem View-Controller ändern? – onnoweb

+0

Ignoriere meine Antwort, mein Telefon hat die Post aufgelöst. – borrrden

+0

Zuerst raten Sie, dass Sie 'UIView' von einem xib laden und Sie sollten es als' cell.contentView' einstellen. Versuchen Sie folgende Einstellung: 'cell.contentView = (UIView *) [topLevelObjects objectAtIndex: 0];' anstelle von 'cell = [topLevelObjects objectAtIndex: 0];' –

Antwort

1

scheint die Hintergrundfarbe zu ignorieren wir festgelegt haben, so dass ich nur hinzufügen, eine UIView, um es mit einer Hintergrundfarbe und das scheint zu arbeiten ..

+1

Sie können die Hintergrundfarbe in 'willDisplayCell ...' einstellen, das ist der empfohlene Ort dafür. – jrturton

1

EDIT: Warum ist es nicht schwarz - ich erwarte, dass etwas ist verdunkeln Sie Ihre schwarz - der wahrscheinlichste Kandidat dafür ist der Hintergrund des Etiketts weiß und nicht klar.

Neben Punkt 3.

Die Attribute Inspektor (der vierte Reiter) muss die Wiederverwendung Kennung der Kennung werden Sie wieder verwenden (Sie verwenden @ „Zelle“ in Ihrer Frage) festgelegt haben. Ich würde versuchen, etwas etwas spezifischer zu verwenden - schließlich könnten Sie in einigen Apps viele Arten von benutzerdefinierten Zellen haben.

Ich glaube, Sie müssen auch die topLevelObjects bis (CustomCell *) werfen somit

if (cell == nil) { 
    NSLog(@"DO I GET HERE?"); 
    NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"CustomCell" owner:nil options:nil]; 
    cell = (CustomCell*)[topLevelObjects objectAtIndex:0]; 
} 
+0

Erprobte Einstellung Wiederverwendung Identifikator wie Sie vorgeschlagen und Casting .. aber immer noch die weißen Zellen :( – sayguh

+0

In der Xib - Ist die Zelle das erste/einzige Objekt? Ich kann nicht denken alles andere, was falsch sein könnte - der Code, den Sie haben, ist in der Form identisch mit dem, den ich verwendet habe.Klicken Sie mit der rechten Maustaste auf den Besitzer der Datei in der Xib und überprüfen Sie, dass die Ansicht auf nichts eingestellt ist - es sollte nicht etc. sein. – Damo

+0

Ja, Zelle ist die erste und einzige. Ich bin auch völlig verwirrt. Datei-Besitzer ist nicht auf etwas gesetzt. Macht es einen Unterschied, dass ich einen UIViewController anstelle eines UITableViewController verwenden? Auch das ist der detailViewcontroller eines splitviewcontrollers ... Könnte das etwas damit zu tun haben? Ich könnte hier Strohhalme greifen – sayguh

0

Sie haben Ihre individuelle Zelle mit dem Tableview passieren Dies muss

registrieren, bevor die Delegierten aufgerufen:

[self.tableView registerClass: [CustomCell class] forCellReuseIdentifier:@"CellIdentifier"]; 
Verwandte Themen