UIActivityIndicatorView с UITableView в контроллере навигации - PullRequest
2 голосов
/ 14 ноября 2009

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

Однако в подробном представлении извлекаются данные из Core Data. я извлекаю относительно большой объем данных, загрузка которого занимает около трех секунд.

Я хотел добавить этот UIActivityIndicatorView, чтобы показать прогресс.

Я попытался запустить анимацию, когда пользователь щелкнул строку, поэтому я установил ее для анимации в didSelectRowAtIndexPath

По какой-то причине индикатор активности не запускается до появления подробного представления.

Есть идеи, почему? или лучший способ реализовать такую ​​идею?

~ * Adham 1013 *

Ответы [ 3 ]

3 голосов
/ 14 ноября 2009

Поскольку вы запускаете анимацию, а затем запускаете большую операцию в том же потоке. Попробуйте запустить эту 3-секундную операцию в новом потоке. Посмотрите на NSOperationQueue и затем создайте NSOperation для запуска этой процедуры. Так будет работать.

1 голос
/ 24 ноября 2009

Метод вызова в потоке:

[NSThread detachNewThreadSelector: @selector(loadMethod) toTarget:self withObject:nil];

См. Подробности ниже:
http://iphone.zcentric.com/?s=UIActivityIndicatorView

1 голос
/ 14 ноября 2009

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

Вы можете либо переместить что-то в другой поток, либо вы можете отложить загрузку нового табличного представления, вызвав performSelector:afterDelay: с задержкой 0. Это задержит загрузку нового табличного представления до окончания действия индикатор появляется в пользовательском интерфейсе. Теперь все по-прежнему в одном потоке, поэтому вам будет запрещено делать что-либо, но если анимация будет добавлена ​​в монитор активности, это будет быстрым и простым решением.

...