NSTableView с кнопками Plus и Minus - программирование
Подтвердить что ты не робот

NSTableView с кнопками Plus и Minus

Как я могу сделать что-то подобное?

Screenshot

Я не нашел подходящего объекта в библиотеке Interface Builder.

Любые мысли?

4b9b3361

Ответ 1

Лучший способ, которым я нашел, - использовать NSSegmentedControl.

после того, как вы перетащили его на холст, вы должны настроить его стиль:

Style: Small Square
Mode:  Select Momentary

выглядит лучше. Теперь используйте поле "изображение", чтобы установить NSAddTemplate и NSRemoveTemplate. Убедитесь, что поле метки пуст.

Хорошо, у нас есть "+", "-" и один пустой сегмент. Чтобы предотвратить выбор последнего из пользователей, выберите его из Сегмент: и снимите флажок Включено (расположенный рядом с Состояние:).

И, наконец, нам нужно установить width первых двух сегментов, чтобы сделать их квадратными.

  • Перейти к Инспектору размеров
  • Выберите Сегмент 0
  • Отключить флажок Исправлено "(сегмент должен немедленно авторезистировать, чтобы соответствовать изображению)
  • Выберите Сегмент 1 и повторите номер 3
  • Теперь при изменении размера элемента управления только последний сегмент изменит ширину
  • Поместите его внизу таблицы и измените размер.

Наслаждайтесь;)

Ответ 2

Используйте NSButton с стилем градиента, а для изображений используйте систему NSAddTemplate и NSRemoveTemplate.

Ответ 3

Обновление для OSX Yosemite

Я попытался добиться того же взгляда, что и Mail.app в представлении "Учетные записи" (в правом окне на моем снимке экрана).

Я достиг желаемого результата, выполнив следующие шаги:

  • Добавить NSSegmentedControl
  • Добавьте два сегмента и установите изображение для каждого:
    • NSAddTemplate для кнопки +
    • NSRemoveTemplate для кнопки -
  • Задайте размер сегментов fixed и установите значение 32 пикселей
  • Прямоугольник рядом с кнопками - NSButton со стилем Gradient.
  • Кнопка включена, но Отказ от первого ответчика установлен на true, так что он не доступен для клика.

Screenshot

Ответ 4

Один ответ здесь предполагает использование кнопок градиента, однако эти кнопки нельзя отключить, так как это заставляет фон меняться и, таким образом, нарушает внешний вид. Другой предложил использовать сегментированный элемент управления, который является почти идеальным, но сегментированные элементы управления не поддерживают авторезистентность, например. если ширина таблицы динамическая. Мое предложение - это комбинация обоих. Используйте сегментированный элемент управления для фактических кнопок и кнопку градиента, чтобы заполнить остальную ширину таблицы, которая теперь также может быть динамической, если ширина кнопки также динамическая.

См. мой ответ на аналогичный вопрос (со скриншотами): fooobar.com/info/325105/...