Ich habe versucht, in Gewohnheit zu verwenden automatischen Layout UITableViewCell Und versucht, die dynamische Höhe umzusetzen nach dieser SO Themacell.contentView systemLayoutSizeFittingSize: funktioniert nicht für dynamische Höhe Tableview
Using Auto Layout in UITableView for dynamic cell layouts & variable row heights
Aber meine Zelle erstellt wird durch XIB-Datei. So das Verfahren etwas anders ist Hier ist mein Code in heightForRowAtIndexPath
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
myDataItem *item= [[data items] objectAtIndex:[indexPath row]];
CustomCell *cell = [self.offscreenCells objectForKey:@"CustomCell"];
if (!cell) {
cell = [CustomCell alloc] init];
[self.offscreenCells setObject:cell forKey:@"CustomCell"];
}
[cell.commentView setText:item.comment];
[cell.displayNameView setText:item.displayNameOfItemOwner];
[cell.timeAgoView setText:item.timeAgo];
[cell.imageView setImage:[UIImage imageNamed:@"sis_profile_placeholder"]];
cell.bounds = CGRectMake(0.0f, 0.0f, CGRectGetWidth(tableView.bounds), CGRectGetHeight(_prototypeCell.bounds));
[cell setNeedsLayout];
[cell layoutIfNeeded];
CGFloat height = [cell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize].height;
return height+1; }
Und die Höhe, die mich von [cell.contentView systemLayoutSizeFittingSize: UILayoutFittingCompressedSize] ist immer und überall „Null“ " Als ich zum Debuggen versucht, ich Ich habe festgestellt, dass alle Untersichten meiner benutzerdefinierten Zelle "nil" sind, aber die Zelle selbst ist nicht "nil". Dies liegt daran, dass die customCell von mir per nib gemacht wird und wenn ich [[CustomCell alloc] init] die Zelle nicht vollständig erstellt.
Aber ich habe versucht, Methode in Zelle = [_tableView dequeueReusableCellWithIdentifier: @ "CustomCell"];
Das Ergebnis ist immer noch das gleiche. Jede Unteransicht ist null. Dies führt dazu, dass die Höhe auf Null zurückgesetzt wird und die Tabellenanzeige falsch angezeigt wird. Gibt es eine Möglichkeit, dies zu lösen?
Ich habe versucht, diese auf AutoLayout zu machen. Tatsächlich, in der vorherigen Version, die ich AutoLayout nicht verwendet habe und die Zelle Höhe manuell berechnen. Es hat tadellos funktioniert. Wie auch immer, ich möchte einfach AutoLayout ausprobieren.
Bitte helfen Danke im Voraus
'cell = [CustomCell alloc] init];' wird nicht funktionieren, wenn Sie beabsichtigen, die Zelle von einer Spitze zu laden. Werfen Sie einen Blick auf [diese Frage] (http://stackoverflow.com/questions/540345/how-do-you-load-custom-uitableviewcells-from-xib-files) für Informationen, wie Sie dies tun. – smileyborg
Vielen Dank. Ich kann jetzt die CustomCell von Xib erstellen. Aber die [cell.contentView systemLayoutSizeFittingSize: UILayoutFittingCompressedSize] gibt immer noch nil –
zurück Diese Methode hat einen Rückgabetyp von CGFloat, nicht ID, also sollte es keine NULL zurückgeben. Aber wenn es 0.0 zurückgibt, haben Sie wahrscheinlich etwas falsch mit den Einschränkungen. Auch hier empfehle ich Ihnen, Ihre Einschränkungen im Code zu beachten, da es viel einfacher ist, zu debuggen und richtig zu arbeiten. – smileyborg