2015-07-31 20 views
5

Sto tentando di accedere all'altezza di TableViewCell all'interno della proprietà set della cella.Ottieni l'altezza della riga di aggiornamento nella cella dopo heightForRowAtIndexPath

Sto creando cella attraverso XI ter e poi cambiare l'altezza in base al valore restituito 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; 
} 

Questa è la proprietà nella mia cella.

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

Come posso ottenere 200 (set in heightForRowAtIndexPath) nella cella?

+0

L'altezza è già calcolata in cellForRowAtIndexPath, quindi potrebbe essere necessario ricaricare la cella dopo questo. Ciò otterrà la nuova altezza, ma potrebbe essere un po 'pesante per le risorse. – Tobias

risposta

0

Funziona in un modo diverso. heightForRowAtIndexPath viene utilizzato da tableview per sapere quanto spazio riservare alla cella in modo che possa disporre le celle nel modo desiderato. Quando si crea una cella da un xib ha le dimensioni che si disegnano, non è correlata alla dimensione della riserva della vista tabella per la cella.

Quindi è necessario ridimensionare (cambiare la cornice) della cella quando la si crea (dequeque ...) o nel metodo setTicks se si desidera che corrisponda allo spazio specificato nella vista tabella, perché le 2 informazioni sono non relazionato.