Nano Hash - криптовалюты, майнинг, программирование

Странное поведение при использовании NSOutline на основе представлений (список источников)

У меня есть (новый в Lion) NSOutlineView на основе представления в качестве SourceList боковой панели в моем приложении с использованием CoreData + NSTreeController + Bindings + NSOutlineView и объекта как NSOutlineViewDelegate.

Я использую эти методы делегата в делегате outlineview:

- (BOOL) OutlineView: (NSOutlineView *) OutlineView isGroupItem: (id) item В моем случае элемент является группой, когда отношение родителей (Core Data) равно нулю.

- (NSView *) outlineView: (NSOutlineView *) OutlineView viewForTableColumn: (NSTableColumn *) tableColumn item: (id) item Чтобы вернуть представление ячейки заголовка (группа) или представление всей панели данных (значок + текст).

И я установил размерный стиль представления структуры (в Интерфейсном Разработчике в XCode) как "Системная боковая панель по умолчанию", чтобы вид ячейки менял свой размер, когда пользователь изменяет его в системных настройках.

Работает нормально ... но есть несколько проблем:

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

  • Первое представление ячейки - это групповая ячейка (ячейка заголовка), и при раскрытии-свертывании текстовое поле для этого представления ячейки перемещается вверх-вниз. Только бывает с первым.

  • Текстовое поле в ячейках заголовка меняет свой размер (при изменении размера в системных настройках), но я хотел бы, чтобы размер ячеек заголовка оставался фиксированным, как (Lion) Finder, Mail ...

  • Строковое значение текстового поля в ячейках заголовка не отображается в верхнем регистре.

  • Изображения, которые я использую в качестве значков в представлении изображений ячеек данных, кажутся прозрачными (со значением альфа 0,5 или чем-то в этом роде).

Любая помощь? заранее спасибо

РЕШЕНО:

  • Для движения при раскрытии / свертывании первого вида ячейки используйте метод setFloatsGroupRows: NO с контурным обзором (спасибо, Антон!)

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

  • Используя valueTransformer (который преобразует строку в верхний регистр) с ячейкой заголовка, строка будет отображаться в верхнем регистре. Также вы можете сделать это с помощью метода источника данных nsoutlineview - outlineView: objectValueForTableColumn: byItem: ...

  • И, наконец, значок полупрозрачный, потому что он не включен. Снимите флажок «Условные наборы включены» в значении или пути к значению (в зависимости от того, что вы используете) в привязках ячеек изображения.

25.07.2011

  • Расскажите, пожалуйста, о том, как отображать разные значки в групповых элементах? В моем проекте я могу установить только один и тот же значок для всех дочерних элементов. Благодарность 19.09.2015

Ответы:


1

Установка setFloatsGroupRows: NO для представления структуры должна решить проблему с перемещением первого элемента группы вверх-вниз при развертывании / сворачивании.

17.08.2011
  • А вот и волшебный фрагмент кода. Работает отлично. Спасибо, Антон! 18.08.2011

  • 2

    Если это никому не очевидно:

    «Строки группировки с плавающей запятой» в Интерфейсном Разработчике:

    Вы можете установить «Групповые строки с плавающей запятой» непосредственно в Интерфейсном Разработчике.

    1. выберите свой исходный список в схеме документа Интерфейсного разработчика.

    2. покажите Attributes Inspector, и вы найдете флажок «Floats Group Rows». Снимите его, и ваши неприятные прыгающие групповые заголовки внезапно начнут вести себя как надо :)

    В Swift:

    В качестве альтернативы, если вы используете Swift, вы можете сделать что-то вроде:

    @IBOutlet weak var sourceList: NSOutlineView!    
    sourceList.floatsGroupRows = false
    
    29.12.2015

    3

    Вы также можете посмотреть ответ на этот вопрос: Шрифт ячейки заголовка NSOulineView Автоматический стиль у меня сработал танец с отменой выбора-повторным выбором.

    17.04.2012

    4

    Мне было интересно, как вы достигли списка источников, который виден на скриншоте.

    Я создал небольшой образец проекта, который делает то же самое и включает отзывы от @ anton-ivanov:

    • Показать список предметов
    • Отредактируйте предметы в режиме мастер-деталь
    • Удалить и добавить элементы
    • Использование привязок

    Ознакомьтесь с besi / mac-quickies на github. Большая часть работы либо выполняется в IB, либо ее можно найти в AppDelegate

    скриншот

    11.10.2013
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

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

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..