2012-01-05 29 views
0

我試圖從我的地址簿中獲取聯繫人。我在我的tableview上顯示數據。首先,我設置tableviewcell的高度。具有不同值的tableview委託方法中的索引路徑

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

之後,我實現

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

我將這些委託方法內的條件和邏輯。但是我遇到了一個問題,兩個方法中的索引路徑的值是不同的。由於這個原因,當我通過地址簿(在這些方法中)循環時,兩個委託方法都以不同的順序執行。爲什麼該指數路徑在這兩種情況下

+3

你應該關心的兩個委託方法的唯一的事情是返回正確的值**根據**給定的索引路徑 – 2012-01-05 14:59:28

回答

2

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath只是叫法不同值的電池映入眼簾

-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath被稱爲所有行之前提出得到的tableview的總高度的tableview時內容。

而且我還必須同意@Vince的評論,你應該關心的唯一事情是這些方法根據給定的索引路徑返回正確的值。

通常情況下,您應該將表格視圖所需的所有數據載入,例如NSArray。然後根據indexpath從該數組中獲取正確的對象。

+0

這意味着,這兩個索引路徑將是不同的權利? – 2012-01-05 15:05:41

+1

不,indexpath是表格視圖中行的位置。如果你有2個部分,每個部分有4行。那麼第一部分中第一行的索引路徑應該是'{0,0}'。因此'indexpath.section == 0'和'indexpath.row == 0'。 – rckoenes 2012-01-05 15:10:33

+0

我正在顯示兩個方法的indexpath.row,在我的日誌中。但是在這兩種情況下,我得到了不同的值 – 2012-01-05 15:38:34