Ich habe mehrere Zellen in meiner Tabellenansicht; z.B. Katzenzelle, Hundezelle, Hühnerzelle. In der Katzzelle habe ich zwei Ansichten: eine Graphikansicht und eine Bildansicht.Tabellenansicht Zellenhöhe
Wenn die Diagrammansicht ausgeblendet ist und die Bilderansicht sichtbar ist, möchte ich die Zellenhöhe auf 200 und 350 im umgekehrten Fall einstellen.
Wie würde ich das erreichen? Ich registriere meine Nib-Datei in der Delegate-Methode der Tabellenansicht und ich habe verschiedene Dinge ausprobiert, ohne Erfolg. Dies sind die beiden Ansichten in meiner Zelle:
@property (weak, nonatomic) IBOutlet UIView *imagesView;
@property (weak, nonatomic) IBOutlet UIView *graphView;
... und das ist mein heightForRowAt
Methode:
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
TrainingImageCell *cell = (TrainingImageCell*)[self.tableView dequeueReusableCellWithIdentifier:@"TrainingImageCell"];
if (cell.isGraphViewOnTop == YES) {
return 350;
}
else {
return 200;
}
return 200;
}
Warum registrieren NIB-Datei in heightForRowAt. Sie registrieren neue Zelle und können daher nicht auf die ausgehende Zelle zugreifen. Wenn Sie möchten, dass es in Ihrem Stil funktioniert, anstatt eine neue Zelle in der Höhe für die Zeile bei IndexPath zu registrieren, können Sie mit indexPath auf die vorhandene Zelle als TrainingImageCell * currentCell = (TrainingImageCell *) zugreifen [tableView cellForRowAtIndexPath: indexPath]; und prüfen Sie die Eigenschaft. – luckyShubhra
Es ist nicht zulässig, die Methode dequeueReusableCellWithIdentifier in heightForRowAtIndexPath zu verwenden. Weil die erste heightForRowAtIndexPath-Methode aufgerufen und dann die cellForRowAtIndexPath-Methode aufgerufen wird. Wenn Sie mir einen Code der cellForRowAtIndexPath-Methode zeigen, kann ich Ihnen helfen. –
Ich habe diesen Teil @ YagneshDobariya Ich muss es wie in den Antworten erwähnt verwenden, aber ich habe Probleme mit Reload Tableview. Ich habe eine bool-Eigenschaft isShowingGraphView definiert und meine Ansichten in cellForRowAt nach dem Registrieren der Nib ein- und ausgeblendet. Ich rufe diese Eigenschaft in heightforRowAt und gegen die bool zurückkehrende Höhe, aber wenn ich rufe, lädt TableView ganze Ansicht verschwindet. –