我遇到問題的表是從另一個表控制器中推出的,並且此表中只有一個部分,我使用的是自定義單元格。這裏是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方法,我甚至試圖修改這個數字父表中的行沒有任何運氣。
如果有任何信息缺失請讓我知道。該項目退出複雜,我想不出有關此問題的任何其他相關信息。
哦,是的,我明白了第二天。下次我真的應該停止編寫/調試代碼,而我很困。謝謝Dave和Ankur的回覆。 – Motasim 2010-08-08 18:16:12