2016-04-21 7 views
1

Ich habe viele Fragen und Antworten zu dieser Frage, aber nichts funktioniert. Ich habe zwei benutzerdefinierte Zellen in einer Tabelle. Ich möchte die Höhe der Zelle auf der Grundlage des Inhalts ändern. Ich versuche, diesen Code jetzt zu verwenden, aber es funktioniert nie.Zwei benutzerdefinierte Tabellenansicht Zellenhöhe auf der Grundlage des Inhalts

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    CustomTableViewCell *cell; 
    NSLog(@"%ld",(long)indexPath.row); 
    NSLog(@"%ld",(long)hospital.hospComment.count); 
    if (hospital.hospComment.count > (indexPath.row+1)) { 
     cell.personComment.text = [hospital.hospComment objectAtIndex:(indexPath.row +1)]; 

    } 

    [cell setNeedsLayout]; 
    [cell layoutIfNeeded]; 

    CGFloat height = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height; 

    height += 1; 

    return height; 
} 

Wie kann ich das erreichen ??

+0

Überprüfen Sie dieses Beispiel e - https://github.com/rayfix/MultilineDemo – nanjunda

+1

Ihre '* Zelle' ist' nil'. – Desdenova

Antwort

0

Sie Zelle erklären sollte wie,

CustomTableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"tableViewCellMain"]; 

if (cell == nil) { 

cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"tableViewCellMain"]; 

} 

accordint auf Ihre Erklärung Zelle gleich null. zweite Sache stellen Sie sicher, dass Sie richtige Einschränkungen geben

Und noch ein Vorschlag: Sie können Apples neue Funktion UITableViewAutomaticDimension und estimatedRowHeight verwenden. Um mehr darüber zu erfahren, verweisen Sie dieses große und kleine Tutorial von Appcoda.

Hope this helfen :)

1

Hat die Zelle richtige Einschränkungen? Wenn dies nicht der Fall ist, funktioniert dieser Code niemals.Auch kann Ihre Zellenhöhe nicht berechnen

0

Wenn Sie iOS 8 und höher verwenden, müssen Sie die Höhe für jede Zeile nicht berechnen, wenn Sie die Einschränkungen in Ihrer Zelle korrekt festgelegt haben .

Sie müssen die folgenden Zeilen in viewDidLoad umfassen:

[self.tableView setRowHeight:UITableViewAutomaticDimension]; 
[self.tableView setEstimatedRowHeight:45.0]; 

Wenn Sie Versionen unterstützen weniger iOS 8, müssen Sie für jede Zeile die Höhe manuell berechnen. Sie haben viel Tutorial zur Berechnung der Höhe der Zelle.

0

Ich habe gerade ein einfaches Projekt und vor dem gleichen Problem, so hielt ich eine Methode, um die Höhe der Zelle in customTavleViewCell Berechnung, hier ist das, was ich den Tableview halten haben können als tableview.h und tableview.m Dateien und CustomTableViewCell.h und CustomTableViewCell.m In tableview.h

@property (nonatomic,strong) UIViewController *tempViewController; 

In tableview.h (heightforrowatindex Pfad)

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 
CustomTableViewCell *cell = [[CustomTableViewCell alloc]init]; 
_tempViewController = [[UIViewController alloc]init]; 
[_tempViewController.view addSubview:cell]; 
if(hospital.hospComment.count > (indexPath.row+1)) { 
{ 
    cell.personComment.text = [hospital.hospComment objectAtIndex:(indexPath.row +1)]; 
}return [cell calcheight];} 

in CustomTableViewCell.h

-(CGFloat)calcheight; 

in CustomTableViewCell.m

-(CGFloat)calcheight{ 
CGFloat height; 
// do calculations using the text in personComment 
return height;} 

Und wenn Sie ein Problem haben oder Zweifel Kommentar unten

Mit freundlichen Grüßen

Koushik S haben

Verwandte Themen