cellForRowAtIndexPath: не вызывается

У моего приложения два состояния: авторизовано и не авторизовано, и у меня следующая архитектура (значительно упрощенная):
- ViewController A, который содержит поле поиска и табличное представление.
- ViewController B, который используется для входа в приложение.

Поток следующий:
- пользователь не вошел в систему;
- A помещается в стек. В viewWillAppear я проверяю, вошел ли пользователь в систему, и если да, выполняется асинхронный сетевой запрос, и, как только это будет сделано, таблица загружается данными из сети. Однако, поскольку пользователь еще не вошел в систему, табличное представление пусто:
- пользователь нажимает на поле поиска; поскольку он не вошел в систему, B нажимается (после подтверждения);
- он успешно входит в систему B, затем нажимает кнопку, которая выскакивает B и снова показывает A;
{{1} } - в этот момент, поскольку он вошел в систему, из viewWillAppear я выполняю асинхронный запрос;
- когда это завершается, я вызываю reloadData в виде таблицы.

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

Я проверил, и reloadData вызывается в основном потоке.

Есть идеи, что это может быть? Потому что это сводит меня с ума!

Спасибо,
S.

РЕДАКТИРОВАТЬ: Вот асинхронный бит кода из viewWillAppear в A.

if ([User isLoggedIn]) {
    [self.asyncRequest fetchDataWithCompletionHandler:^(id response, NSError *error) {
        [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
        if (error) {
            [Utils displayError:error];
        } else {
            self.array = response;

            self.isLoaded = YES;
            [self.tableView reloadData];
            [self.tableView setContentOffset:CGPointMake(0.0f, 0.0f) animated:NO];
        }
    }];
}

Я проверил, что асинхронный запрос завершается успешно и что ответ содержит правильные данные (это - это массив, используемый для поддержки UITableView ).

После reloadData я поставил точку останова в tableView: numberOfRowsInSection: , и он останавливается на этом и возвращает правильное количество элементов в массиве . Однако после этого точка останова в tableView: cellForRowAtIndexPath: никогда не достигается.

66
задан Stelian Iancu 11 October 2011 в 07:42
поделиться

1 ответ

Это, возможно, слишком очевидное, но в моем случае, я удалял элемент (Маркировка), которая была ссылкой на верхнее поле моей таблицы программно, таким образом, это не была проблема с делегатом/источником, но таблицы, имеющей некоторые проблемы с довольным размером / высота, этот конфликт, создало странное поведение, звоня numberOfRowsInSection, но не cellForRowAt indexPath

0
ответ дан 24 November 2019 в 14:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: