2016-08-05 37 views
0

I Höhe programmatisch Zell am Berechnung in heightForRowAtIndexPath-Ausgabe Während Höhe UITableViewCell Finding

Meine komplette Methode ist:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    id cell = [self.tableView dequeueReusableCellWithIdentifier:kCellID]; 

    if([cell isKindOfClass:[Custom class]]) 
    { 
     return 100; 
    } 
    else 
    { 
     return 20; 
    } 
} 

Meine app 3-5 sec nimmt die Viewcontroller zu zeigen. Obwohl cellForRowAtIndexPath aufgerufen wird und ich die Protokolle in der Konsole anzeigen kann.

Aber mein ViewController nicht geladen.

Wenn nur die Höhe zurückkehren diesen Code App funktioniert gut:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{ 

    return 100; 
} 

Ich weiß nicht, das ist das Problem mit dieser Zeile:

id cell = [self.tableView dequeueReusableCellWithIdentifier:kCellID]; 

Was ich in dieser Frage bin fehlt ?

+0

dies sehen http://stackoverflow.com/questions/18206448/how-can-i-get-the-height-of-a-specific-row-in-my-uitableview und http://stackoverflow.com/questions/13968316/get-guidableviewcells-height-after-setting-height-for-autableviewcell –

+0

@ Anbu.Karthik Ich muss den Typ der Zelle finden, da ich zwei Arten von Zellen habe . Das ist das Hauptproblem. Wann immer ich den Code verwende, um den Typ der Zelle zu finden, startet meine App Verzögerungen – Dalvik

+2

Warum verwenden Sie nicht eine Eigenschaft isTableViewWithCustomCells oder isTableViewWithOtherCustomCells? Es sollte schneller sein. und ich denke, dass 'heightForRowAtIndexPath:' vor cellForRowAtIndexPath und dem Dequeue-Stuff aufgerufen werden kann. – Larme

Antwort

0

Sie haben eine Logik in der cellForRowAtIndexPath: Methode, die bestimmt, welcher Typ von Zelle diese Zeile sein sollte. Fügen Sie diese Logik in die heightForRowAtIndexPath:-Methode ein, um zu bestimmen, wie hoch die Höhe jeder Zeile sein sollte.

0

Sie diese Zeile ist falsch

id cell = [self.tableView dequeueReusableCellWithIdentifier:kCellID]; 

es Ihr Handy wieder zu verwenden zwingen wird.

Verwenden

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    id cell=[tableView cellForRowAtIndexPath:indexPath]; 

    if([cell isKindOfClass:[CustomCellClass class]]) 
    { 
     return 100; 
    } 
    else 
    { 
     return 20; 
    } 
}