Настраиваемый вид с возможностью обновления на панели инструментов UIToolbar

#iphone #objective-c #cocoa-touch #uiview #uitoolbar

#iPhone #objective-c #cocoa-touch #uiview #панель инструментов uitoolbar

Вопрос:

Я хочу создать небольшую область для представления некоторой информации в середине UIToolbar и задавался вопросом, каков наилучший способ сделать это.

Мне нужно показать некоторый текст и графику, оба из которых необходимо обновлять (примерно каждые 3 секунды) по мере поступления новой информации. Графика похожа на индикатор уровня сигнала iPhone, поэтому ее можно либо нарисовать на заказ, либо выбрать из 3 графиков (низкой, средней, высокой интенсивности).

Я, вероятно, буду использовать initWithCustomView: для создания UIBarButtonItem , хотя мне бы хотелось, чтобы вид был интерактивным (чтобы позволить пользователю изменять отображаемую информацию).

Каков наилучший способ создать такой вид? Могу ли я использовать перо или мне нужно выполнить пользовательский рисунок в представлении? Каков наилучший способ обновить кнопки? Я предполагаю, что мне придется каждый раз переделывать toolbarItems массив и устанавливать его при изменении информации. Есть ли более чистый способ сделать это? Спасибо.

Ответ №1:

Использование initWithCustomView: кажется хорошим решением. Вы можете создать свой пользовательский вид любым удобным для вас способом: с помощью КОНЧИКА, нарисовав его, даже используя изображения. У него также могут быть свои собственные подвиды. Это может быть любой объект, который наследуется от UIView. (Итак, при желании вы могли бы даже сделать его доступным для выполнения с помощью UIButton, пользовательского UIControl или пользовательского UIView с подключенным распознавателем жестов.)

Вам не придется переделывать элементы toolbarItems (или, если на то пошло, делать что-либо с ним после добавления всех ваших элементов button), если вы просто сохраните указатель на свой пользовательский вид UIBarButtonItem. Это может быть переменная экземпляра. Затем, чтобы обновить пользовательский вид, вы могли бы получить к нему доступ, как к любому другому виду. На самом деле я никогда не пробовал это, но я не вижу никаких проблем с этим.

Звучит так, будто вы в основном с этим разобрались. Надеюсь, это полезно.

Комментарии:

1. Спасибо, это было полезно. В итоге я написал небольшое тестовое приложение, которое создало представление с меткой и изображением и использовало initWithCustomView: для его вставки. Он работает хорошо и может обновляться при подключении к представлениям. Я превращаю его в пользовательский контроллер просмотра с файлом NIB, чтобы упростить работу.

Ответ №2:

Мне нужно было такое же решение, и я надеялся получить от вас несколько примеров кода. Итак, я закончил тем, что сделал все это в IB, и шаги здесь следующие:

  1. Создайте UIToolbar в IB без элементов. (Элемент кнопки панели будет добавлен снова, как только вы добавите UIView)
  2. Добавьте UIView в качестве подвида UIToolbar
  3. Добавьте UILabels в подвиде UIView, который уже является подвидом панели инструментов UIToolbar.
  4. Создайте IBOutlets из UIToolbar, UIView и каждой UILabel, а затем вы сможете ссылаться на метки в своем приложении.
  5. Я установил для фона значение clearColor, чтобы текст отображался поверх панели инструментов UIToolbar без каких-либо полей или границ.
  6. И текст обновляется динамически, что было желаемым результатом.

Надеюсь, это кому-то поможет, поскольку это некоторое время ускользало от меня.

введите описание изображения здесь