Я пишу приложение Какао, и мне нужно указать пользователю, что представление недопустимо и не может ответить, пока не завершится фоновое задание.
Более длинная версия:
Представление в моем приложении содержит некоторые данные, полученные с сервера.Когда приложение определяет, что данные являются недействительными, оно получает свежую информацию и отображает ее.Обычно обновление происходит слишком быстро, чтобы увидеть, но если из-за проблем с сервером или сетью фоновое задание занимает больше секунды или двух, мне нужно убедиться, что пользователь
- не может взаимодействовать с представлением, показадание завершено;
- Может сказать, что представление ожидает обновления;и
- Может продолжать взаимодействовать с другими частями приложения до завершения задания.
1) важно, поскольку любая операция, инициированная с устаревшими данными, завершится неудачно, и еслисеть или сервер работают медленно, я не хочу, чтобы пользователь тратил свое время на тщетные попытки взаимодействия с этой частью приложения.(Хорошо, если пользователь все еще может увидеть данные. На самом деле это может быть полезно, но это не принципиально.)
Какой стандартный способ сделать это в Какао?Для чего это стоит, в Eclipse Framework я думаю, что я использовал метод showBusy
на ViewPart
.
Если не существует стандартного способа, есть ли у кого-нибудь предложения по его решению?Я не использую OS X очень долго, поэтому я даже не уверен, как приложение должно выглядеть и вести себя в этой ситуации.(Скриншоты на этой странице выглядят многообещающе, но это iOS, а не OS X: http://cocoawithlove.com/2009/04/showing-message-over-iphone-keyboard.html)
Сейчас я работаю над заменой всего представления на NSProgressIndicator
и восстановлением представления после завершения задачи, но удаление представления означает, что мое приложение может оказаться в отличном состоянии, если что-то пойдет не так. Кроме того, я хотел бы иметь возможность выделить эту функциональность в свой собственный класс или категорию (?), так как у меня будет эта проблема снесколько различных классов представления в моем приложении. В идеале я хотел бы получить что-нибудь простое, например Eclipse view.showBusy (true) /view.showBusy (false).
Любая помощь будет полезна.Спасибо!