Мое приложение имеет два состояния: вход в систему и не вход в систему, и у меня есть следующая архитектура (значительно упрощенная):
- ViewController A, который содержит окно поиска и вид таблицы.
- ViewController B, который используется для входа в приложение.
Поток следующий:
- пользователь не вошел в систему;
- A вставляется в стек. В viewWillAppear
я проверяю, вошел ли пользователь в систему, и если да, выполняется асинхронный сетевой запрос и, как только это будет сделано, таблица будет загружена данными из сети. Однако, поскольку пользователь не входит в систему в этот момент, вид таблицы пуст,
- пользователь удаляет окно поиска; потому что он не вошел в систему, B нажали (после подтверждения),
- он успешно записывается в B, затем нажимает кнопку, которая появляется B и снова показывает A,
- на данный момент, потому что он вошел в систему, от viewWillAppear
я выполняю запрос async,
- когда это будет завершено, я вызываю reloadData
в виде таблицы.
Я замечаю, что вызывается numberOfRowsInSection:
, и он возвращает правильный результат, однако cellForRowAtIndexPath:
НЕ вызывается впоследствии, и таблица остается пустой.
Я проверил и reloadData
вызывается в основном потоке.
Любая идея, что это может быть? Потому что это сводит меня с ума!
Спасибо,
S.
EDIT: Здесь асинхронный бит кода из 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];
}
}];
}
Я проверил, что асинхронный запрос завершен успешно и что response
содержит правильные данные (это массив, используемый для возврата UITableView
).
После reloadData
, я поставил точку останова в tableView:numberOfRowsInSection:
, и она останавливается там, и она возвращает правильное количество элементов в array
. Однако после этого точка останова в tableView:cellForRowAtIndexPath:
никогда не попадает.