Приложение для iPhone - Показать UIActivityIndicator во время выполнения IBAction

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

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

Как я могу показать индикатор, пока выполнение метода завершено?

Спасибо.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
1 471
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

lostInTransit 19.01.2009 12:12

Другие вопросы по теме