Мне нужна кнопка на моей панели навигации, которая позволяет пользователю обновлять содержимое табличного представления. Tableview уже заполнен, и как только пользователь нажимает кнопку обновления, я хочу показать UIActivityIndicator, пока я извлекаю элементы, которые будут отображаться в таблице.
Я попытался поставить [индикатор startAnimating] перед вызовом метода для получения новых данных таблицы (где индикатор имеет тип IBOutlet UIActivityIndicator * и сопоставлен с элементом управления в IB), но индикатор не отображается. Вместо этого кнопка обновления навигационной панели находится в нажатом положении до тех пор, пока управление не вернется из этого метода IBAction.
Как я могу показать индикатор, пока выполнение метода завершено?
Спасибо.





Вам нужно получить новые данные для таблицы в фоновом режиме. Это может быть асинхронный сетевой вызов или поток, в зависимости от того, что делает ваш код обновления, но пользовательский интерфейс предполагает, что нажатия кнопок в значительной степени мгновенны.
Вы заметите, что блокируется весь ваш пользовательский интерфейс (а не только кнопка обновления), так что это все равно хорошо, хотя реализовать его гораздо сложнее.
Спасибо, Стивен. Но теперь, даже сделав это [self.view setUserInteractionEnabled: NO], пользователь может нажимать любые кнопки. Я пишу этот оператор непосредственно перед отключением нового потока и включаю взаимодействие с пользователем только после завершения обработки. Но я все еще могу нажимать кнопки, пока идет обработка.