2015-10-20 134 views
0

好吧我很確定這種方法一直執行到現在爲止我的UITableViewController。我有打印語句在我的方法,像這樣:heightForRowAtIndexPath永遠不會被調用iOS9

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    //455(PERFECT MIN HEIGHT) 475 is perfect spacing. 15.5 is the scalar for when descriptionLabel expands lines 
    return 475; 
    NSLog(@"ISSSS ITTT ONNNN???"); 

    if (currentDescriptionHeight == 16.0) { 
     NSLog(@"OHHH so it triggered 1111"); 
     return 475; 
    }else if (currentDescriptionHeight == 31.5){ 
     NSLog(@"OHHH so it triggered 2222"); 
     return 490.5; 
    }else if (currentDescriptionHeight == 47){ 
     NSLog(@"OHHH so it triggered 3333"); 
     return 506; 
    } 

    //475 - 1 line description, 
} 

我抄法頭到我.H文件,並正確設置了代表團:在我viewDidLoad:方法

self.tableView.delegate = self; 
self.tableView.dataSource = self; 

。爲什麼我的heightForRowAtIndexPath根本不被調用?

+0

爲什麼你還要在函數的開始return語句? – Fonix

+0

Uhm,如果只有條件中沒有返回,則方法錯誤? – Chisx

+1

返回語句立即結束函數,因此它下面的代碼將永遠不會執行 – Fonix

回答

1

您只需將函數頂部的return語句移動到底部,或將其作爲當前if語句的一部分放入其他語句中,因爲return語句立即結束函數,因此它下面的代碼永遠不會執行。

1

嘗試這樣

EDITED

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

CGFloat height = 475; 
NSLog(@"ISSSS ITTT ONNNN???"); 

if (currentDescriptionHeight == 16.0) { 
    NSLog(@"OHHH so it triggered 1111"); 
    height = 475; 
}else if (currentDescriptionHeight == 31.5){ 
    NSLog(@"OHHH so it triggered 2222"); 
    height = 490.5; 
}else if (currentDescriptionHeight == 47){ 
    NSLog(@"OHHH so it triggered 3333"); 
    height = 506; 
} 

return height; 
} 
+0

如果這三個條件中的任何一個都不是真的,而是所期望的'475',則這將返回'0'。 – rmaddy

+0

希望這將返回475 :-) – Prakash

+0

現在你只需要將'height'改爲'CGFloat'而不是'int'。 – rmaddy

相關問題