2014-10-13 3 views
0

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

- (IBAction)searchButtonPressed:(id)sender 
{ 
    NSLog(@"Search button pressed"); 
    self.loadingLabel.hidden = false; 
} 

Проблема заключается в том, что при нажатии на кнопку поиска во время паузы в течение нескольких секунд (кнопка делает что прижимают эффект) , однако я хочу поставить экран загрузки (как UILabel) вместо этого, чтобы пользователь знал, что происходит. Мой метод searchButtonPressed не работает, чтобы сделать loadLabel видимым. UIButton открывает другой контроллер просмотра при нажатии, который содержит NSScanner, который анализирует какой-либо текст. Это то, что вызывает задержку (требуется несколько секунд, пока не появится видимый контроллер следующего вида). Как я могу отобразить экран загрузки (как UILabel) при переключении с одного контроллера представления на другой, когда он находится в процессе наблюдения за viewdidload в следующем контроллере представления? Я думаю, что диспетчер представлений фактически не показывается до тех пор, пока viewdidload этого контроллера представления не будет завершен. Спасибо.

+2

Вы должны выполнять длительные задачи на фоновом потоке, чтобы не влиять на отзывчивость пользовательского интерфейса – Paulw11

ответ

0

переместите свой NSScanner в backgound in viedDidload или принесите его в - (void)viewDidAppear:(BOOL)animated (в backgound).

Показать вид загрузки в режиме navigationController при нажатии кнопки на предыдущем виде, установить метки для этой точки зрения загрузки

Когда задача выполнена идти в основной поток, чтобы перезагрузить вид и скрыть этот вид нагрузки (может получить его по тэгу)

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