2013-10-30 16 views
8

Ich versuche, meinen Tabellenansicht Zellen einen Untertitel hinzuzufügen, aber sie werden nicht angezeigt. Wo ist der Fehler?Tabellenansicht Untertitel auf IOS7

Ist die Zeile [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle] up-to-date, auch mit iOS 7?

Mit freundlichen Grüßen

Frank


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 

    if (!cell) 
    { 
     cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
    } 

    cell.textLabel.text = @"TestA"; 
    cell.detailTextLabel.text = @"TestB"; 

    return cell; 
} 
+0

, die auf korrekt aussieht mich. Hast du die Storyboard/Xib-Datei benutzt? Stellen Sie sicher, dass Sie einen Zellprototyp da drüben platzieren. –

+0

Willst du damit sagen, dass dieser Code nur dazu führt, dass der Haupttitel angezeigt wird, aber nicht der Untertitel für jede Zeile? Ist das alles in Code oder verwenden Sie Prototypzellen? – rmaddy

Antwort

5

Dieser Code:

if (!cell) 
{ 
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier]; 
} 

wird nie ausgeführt werden, da dequeueReusableCellWithIdentifier: forIndexPath: eine neue Zelle zuzuordnen ist garantiert.

Leider können Sie registerClass:forCellReuseIdentifier: nicht angeben, UITableViewCellStyle.

Ändern dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath zu einfach dequeueReusableCellWithIdentifier:CellIdentifier. Diese Methode garantiert nicht, dass eine Zelle zurückgegeben wird. * Wenn dies nicht der Fall ist, erstellt Ihr Code eine neue Zelle mit dem gewünschten Stil.


* - (es wird, wenn Sie ein Storyboard verwenden, wie rdelmar weist darauf hin, aber das ist hier nicht der Fall.)

+1

"Diese Methode garantiert nicht, dass eine Zelle zurückgegeben wird" - stimmt nicht unbedingt.Wenn die Zelle im Storyboard erstellt wurde, gibt diese Methode auch garantiert eine Zelle zurück. – rdelmar

+0

Wenn Sie eine Klasse oder eine Nib mit der TableView registriert haben, wird automatisch eine Instanz davon zurückgegeben und die Zelle wird niemals null sein. – estobbart

0

Ich hatte ein ähnliches Problem und keine Lösung im Internet gearbeitet mich. Es stellte sich heraus, dass ich ein Idiot war. Ich poste meine Lösung nur, wenn jemand anderes ein ähnliches Szenario erlebt.

Ich gehe davon aus, dass Sie verwenden Storyboard haben erstellt ein Prototyp und stellen Sie den Stil Untertitel

In Ihrem storyboards Dokument Umriss, stellen Sie sicher, dass Sie die protoptype Zelle auswählen und wählen Sie der Untertitel. Siehe Bild:

enter image description here


nun dafür sorgen, dass die Etikett Schriftfarbe einer Natur ist, dass wir sichtbar auf Ihrem Hintergrund!

0

Einfach Unterklasse UITableViewCell und

- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier;

mit der ersten Zeile

[super initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:reuseIdentifier]; 

ist außer Kraft setzen und Ihre Zellklasse mit der Tabellenansicht registrieren

[tableView registerClass:[YourCellSubclass class] forCellReuseIdentifier:@"YourCellID"];
1
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath  *)indexPath { 
UITableViewCell *cell = nil; 
cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; 
if (cell == nil) 
{ 
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"]; 
} 
cell.textLabel.text = @"Title1"; 

cell.detailTextLabel.text = @"Subtitle 1"; 

return cell; 
} 
+0

Antworten sollten eine Beschreibung der Lösung enthalten. – Enkode

+0

Geben Sie der Zelle einen Bezeichner aus der Inspector-Ansicht und schreiben Sie diesen Code in ** cellForRowAtIndexPath **, wobei ** cel.detailTextLabel.text ** der Untertitel ist. – Jamil