2015-07-31 5 views
5

Ich versuche auf die Höhe von TableViewCell innerhalb der setProperty der Zelle zuzugreifen.Aktualisiere Zeilenhöhe in der Zelle nach heightForRowAtIndexPath

ich die Zelle durch xib erstellen und dann die Höhe basierend auf dem Wert zu ändern zurück in heightForRowAtIndexPath

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {  
    return 200; 
} 


- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
     RightGuideCell* cell = [tableView dequeueReusableCellWithIdentifier:@"cellId"]; 
     cell.ticks = @[@"1",@"1",@"1",@"1",@"1",@"1",@"1"]; 
     return cell; 
} 

Dies ist die Eigenschaft in meiner Zelle.

- (void)setTicks:(NSArray *)ticks { 
    _ticks = ticks; 
    CGFloat height = self.frame.size.height; //Value is 44 (size in xib) 
} 

Wie kann ich 200 (set in heightForRowAtIndexPath) in der Zelle?

+0

Die Höhe wurde bereits in cellForRowAtIndexPath berechnet, sodass Sie die Zelle möglicherweise danach erneut laden müssen. Das wird die neue Höhe bekommen, ist aber vielleicht eine Art Ressourcen-schwer. – Tobias

Antwort

0

Es funktioniert auf andere Weise. heightForRowAtIndexPath wird von der Tabellenansicht verwendet, um zu ermitteln, wie viel Speicherplatz für Ihre Zelle reserviert werden muss, damit die Zellen in der gewünschten Weise angeordnet werden können. Wenn Sie eine Zelle aus einer XIB erstellen, hat sie die Größe, die Sie zeichnen, und hängt nicht mit der Größe der Tabellenansichtsreserve für die Zelle zusammen.

Also müssen Sie die Größe ändern (ändern Sie den Rahmen) der Zelle, wenn Sie es erstellen (dequeque ...) oder in Ihrer setTicks-Methode, wenn Sie den angegebenen Platz in der Tabellenansicht übereinstimmen soll, weil die 2 Informationen sind nicht verwandten.