UITableViewController numberOfRowsInSection не влияет на фактическое количество строк - PullRequest
0 голосов
/ 07 августа 2010

Таблица, с которой у меня проблемы, выталкивается из другого контроллера таблицы, и в этой таблице есть только один раздел, и я использую пользовательские ячейки.Вот код для 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]

Независимо от того, какое значение возвращает числоOfRowsInSection, является ли оноНоль или 100, таблица всегда запрашивает 5 строк!Я даже пытался вернуть статическое число в numberOfRowsInSection вместо текущих условий, но это не имеет значения для действительного числа ячеек!

Меня сводит с ума то, что таблица достигает метода numberOfRowsInSection перед переходом к cellForRowAtIndexPath!

Единственное, что я могу думать о том, что это может быть вызвано тем, что этот контроллер таблицы выталкивается из другого UITableViewController, но метод numberOfRowsInSection предыдущей таблицы никогда не проверяется, пока я в этой таблице, я даже пытался изменитьколичество строк в родительской таблице без везения.

Если какой-либо информации не хватает, пожалуйста, дайте мне знать.Проект довольно сложный, и я не могу придумать какую-либо другую соответствующую информацию для этой проблемы.

Ответы [ 2 ]

2 голосов
/ 07 августа 2010

Это потому, что просмотр таблицы загружает только видимые ячейки.Вы пробовали прокрутить ваш стол?Бьюсь об заклад, если вы сделаете это, вы увидите, что загружается больше строк ...

0 голосов
/ 07 августа 2010

Можете ли вы попробовать записать это вместо этого?

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

Я думаю, что то, на что мы смотрим, как результат метода описания, может не совпадать с тем, что вы думаете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...