2010-08-07 69 views
0

我遇到問題的表是從另一個表控制器中推出的,並且此表中只有一個部分,我使用的是自定義單元格。這裏是numberOfRowsInSection的代碼:UITableViewController numberOfRowsInSection不影響實際的行數

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { 
NSInteger numberOfRows; 
if ([imagesArray count] == 0) { 
    numberOfRows = 0; 
} 
else { 
    if ([imagesArray count] % 4 == 0) { 
     numberOfRows = [imagesArray count]/4; 
    } 
    else { 
     numberOfRows = ([imagesArray count]/4) + 1; 
    } 
} 
NSLog(@"numberOfRowsInSection: %d", numberOfRows); 
return numberOfRows; 
} 

這裏的日誌總是打印預期的行數。到現在爲止還挺好。現在,讓我們來看看的cellForRowAtIndexPath:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    NSLog(@"cellForRowAtIndexPath: %@", [indexPath description]); 

    ImageTableCell *cell = (ImageTableCell *)[tableView dequeueReusableCellWithIdentifier:@"4ImagesCell"]; 
    if (cell == nil) { 
      cell = [[[ImageTableCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:@"4ImagesCell"] autorelease]; 
    } 
    return cell; 
} 

這裏的控制檯「總是」打印如下:

cellForRowAtIndexPath: <NSIndexPath 0x5a4f2c0> 2 indexes [0, 0] 
cellForRowAtIndexPath: <NSIndexPath 0x5a4f2c0> 2 indexes [0, 1] 
cellForRowAtIndexPath: <NSIndexPath 0x5a4f2c0> 2 indexes [0, 2] 
cellForRowAtIndexPath: <NSIndexPath 0x5a4f2c0> 2 indexes [0, 3] 
cellForRowAtIndexPath: <NSIndexPath 0x5a4f2c0> 2 indexes [0, 4] 

不管通過numberOfRowsInSection返回的值是,無論是零或100 ,表格總是要求5行!我甚至嘗試在numberOfRowsInSection中返回一個靜態數字,而不是當前的條件,但它對實際的單元格數量沒有影響!

讓我瘋狂的是,在進入cellForRowAtIndexPath之前,表達到numberOfRowsInSection方法!

我能想到的唯一可能導致這種情況的是這個表控制器是從另一個UITableViewController中推入的,但是當我在這個表中時,從來沒有檢查過前表的numberOfRowsInSection方法,我甚至試圖修改這個數字父表中的行沒有任何運氣。

如果有任何信息缺失請讓我知道。該項目退出複雜,我想不出有關此問題的任何其他相關信息。

回答

2

這是因爲tableview只加載可見單元格。你有沒有嘗試滾動你的tableview?我敢打賭,如果你這樣做,你會看到更多的行得到加載......

+0

哦,是的,我明白了第二天。下次我真的應該停止編寫/調試代碼,而我很困。謝謝Dave和Ankur的回覆。 – Motasim 2010-08-08 18:16:12

0

你可以嘗試將它記錄下來嗎?

NSLog(@"cellForRowAtIndexPath: (section:%@, row:%@)", [indexPath section], [indexPath row]); 

我認爲,我們正在尋找的描述方法的輸出可能不是你認爲它的意思。

相關問題