Обновление пользовательского интерфейса вручную - PullRequest
0 голосов
/ 24 августа 2010

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

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

Спасибо!

Ответы [ 2 ]

1 голос
/ 25 августа 2010

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

То, как вы используете поток, зависит от того, что вы хотите сделать, например, вы можете просто использовать - (void)performSelectorInBackground:(SEL)aSelector withObject:(id)arg, или вы можете создать свой собственный поток и быть более конкретным.

Не забудьте позвонить - (void)performSelectorOnMainThread:(SEL)aSelector withObject:(id)arg waitUntilDone:(BOOL)wait, если выВы хотите внести некоторые изменения в пользовательский интерфейс из другого потока.

Все, что вам нужно о программировании потоков, можно в этом руководстве из Справочной библиотеки iOS.

Надеюсь, этопомогает!

0 голосов
/ 24 августа 2010

Вы думаете о простом индикаторе прогресса? Если это так, то вы можете использовать что-то с помощью NSApp (см. Раздел «Управление циклом событий») и использовать runModalForWindow: и runModalSession: это позволит вам открыть панель прогресса, сообщить о состоянии и разрешить методу отмены работа.

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

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