Почему addSubview загружает представление асинхронно - PullRequest
3 голосов
/ 13 мая 2010

У меня есть UIView, который я хочу загрузить, когда пользователь нажимает кнопку. Иногда происходит обработка данных, которая также происходит после . Я вызываю addSubview, который включает анализ файла XML, полученного из Интернета. Проблема в том, что представление не отображается до тех пор, пока после обработки данных даже , если сначала вызывается addSuview. Я думаю, что я что-то здесь упускаю, кто-нибудь может помочь?

Код: у меня есть представление «Загрузка ...», которое я добавляю как пользовательский модал (то есть я не использую modalViewController) Это действие связано с кнопкой в ​​навигационном контроллере.

- (IBAction)parseXml:(id)sender {
      LoadingModalViewController *loadingModal = [[LoadingModalViewController alloc] initWithNibName:@"LoadingModalViewController" bundle:nil];
      [navigationController.view addSubview:loadingModal.view];
      [xmlParser parse];
}

Ответы [ 2 ]

0 голосов
/ 23 июля 2010

Хауди! Если вы ищете легкую работу вокруг:

[self showLoadingScreen]
[self performSelector:@selector(methodToDoWork) withObject:nil afterDelay:0.3];

Однако лучше сделать метод ToDoWork асинхронным, если вы можете.

0 голосов
/ 13 мая 2010

Если вы выполняете обработку в главном потоке, он будет блокировать основной поток до его завершения, что означает, что ваш пользовательский интерфейс перестанет отвечать на запросы и не будет обновляться, пока основной поток не возобновит работу.

Вам необходимо выполнить обработку XML в фоновом потоке, используя что-то вроде NSOperation или существующего асинхронного API, и обновить свое представление после завершения.

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

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