aus, Sie nicht cellForRowAtIndexPath
innerhalb heightForRowAtIndexPath
aufrufen können.
Sie können eine Vorlagezelle erstellen, die zum Füllen Ihrer Daten verwendet wird, und dann ihre Höhe berechnen. Diese Zelle ist nicht am Tabellenrendering beteiligt und kann zur Berechnung der Höhe jeder Tabellenzelle wiederverwendet werden.
Kurz gesagt, es besteht aus Konfigurieren der Vorlage Zelle mit den Daten, die Sie anzeigen möchten, Größe entsprechend dem Inhalt ändern, und lesen Sie dann seine Höhe.
ich diesen Code aus einem Projekt arbeite ich an genommen habe - leider ist es in Objective C, ich glaube nicht, dass Sie Probleme übersetzen zu schnelle
- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
static PostCommentCell *sizingCell = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sizingCell = [self.tblComments dequeueReusableCellWithIdentifier:POST_COMMENT_CELL_IDENTIFIER];
});
sizingCell.comment = self.comments[indexPath.row];
[sizingCell setNeedsLayout];
[sizingCell layoutIfNeeded];
CGSize size = [sizingCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
return size.height;
}
möglich Duplikat von [ EXC \ _BAD \ _ACCESS in heightForRowAtIndexPath iOS] (http://stackoverflow.com/questions/12652761/exc-bad-access-in-heightforrowatindexpath-ios) –
Sie dürfen 'cellForRowAtIndexPath' nicht innerhalb von' heightForRowAtIndexPath' aufrufen. Das EXC_BAD_ACCESS wird durch einen Stapelüberlauf verursacht, der von tiefer Rekursion verursacht wird. –
Woher soll ich CellForRowAtIndexPath aufrufen? –