PresentModalViewController требуется 5 секунд, чтобы вызвать модальное - PullRequest
0 голосов
/ 27 июня 2011

Я пытаюсь представить модальный vc.Но это занимает около 5 секунд или около того, и задержка кажется значительной, так как пользователь пытается нажать на кнопку, пока он не увидит что-то на экране.

Мое модальное представление имеет 3 страницы, и каждая страница имеет6 таблиц в качестве подпредставлений.Я не использую никаких сетевых подключений.Все таблицы загружаются из локальных данных XML.

Итак, мои вопросы: 1) Есть ли способ улучшить производительность загруженного модального vc?2) или я могу показать индикатор активности и позволить представлению загрузиться в фоновом потоке и удалить индикатор после завершения загрузки?

Я попробовал вариант 2. Я запустил индикатор активности на viewDidLoad и весь код инициализации страницы в фоновом потоке с использованием метода executeSelectorInBackground .Но из-за этого мои таблицы выглядят странно, у них все рамки искажены, а ширина и так облажана.Любые предложения действительно очень помогут.

Ответы [ 2 ]

2 голосов
/ 27 июня 2011

Никогда не показывать и не изменять элементы интерфейса в фоновом потоке. Если вы работаете в фоновом потоке и хотите что-то сделать в основном потоке, вы можете использовать селектор:

[self performSelectorOnMainThread:@selector(doSomething:)
                       withObject:someObject
                    waitUntilDone:NO];

или вы можете использовать GCD (мой любимый):

dispatch_async(dispatch_get_main_queue(), ^{
    [self doSomething:someObject];
});

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

0 голосов
/ 27 июня 2011

Вы можете отобразить индикатор активности в viewDidAppear, а затем извлечь данные в фоновом потоке, и вам просто нужно обновить представление / представление таблицы. Таким образом, модальное представление не будет 5 секунд или задержка при представлении.

...