2014-09-29 6 views
0

У меня есть NavigationViewController с UITableView в нем. При загрузке я делаю асинхронный серверный вызов сервера, чтобы получить некоторые данные, чтобы заполнить представление. По возвращении я позвоню updateView.iOS updateView вызван после viewDidAppear

Я обнаружил, что иногда я вижу только панель навигации и нет представления в таблице. Из моей отладки это происходит, когда мой updateView получает вызов ПОСЛЕviewDidAppear.

У меня есть [self.taboleView reloadData] в конце моего updateView, но я думаю, что это не поможет, когда viewDidAppear уже уволен?

Бит путать по этому вопросу. У кого-нибудь есть идея, как решить эту проблему времени?

Это происходит на iPhone с iOS8.

Спасибо!

+0

Поскольку это асинхронный вызов сервера, приложение продолжает основной поток (я думаю). У вас нет функции делегата в вашей асинхронной библиотеке, которая вызывается при получении ответа сервера? – Leandro

+0

Измените асинхронный запрос на синхронный запрос, а затем скажите мне, не имеет значения. –

+0

Вы определенно хотите сохранить его асинхронным, поэтому способ, которым я всегда занимался этим, - запустить запрос в viewWillAppear, поставить на экран какой-то индикатор загрузки, а затем, когда запрос вернется, избавится от индикатора загрузки и перезагрузите представление. Просто как тот. – Mike

ответ

0

Ответ заключается в том, чтобы перезагрузить/обновить вид в основном потоке. Так что в конце моего updateView
Я изменил мой [self.tableView reloadData] к

[self.tableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:TRUE]; 

И это фиксированная моя ошибка!

Смежные вопросы