#cocoa #macos #nsdocument
#cocoa #macos #nsdocument
Вопрос:
У меня есть NSDocument
приложение, которое может сохранять файлы нескольких типов, поэтому при сохранении документа NSDocument услужливо добавляет всплывающую кнопку на панель сохранения в качестве дополнительного вида, которая позволяет пользователю выбрать, какой тип они хотели бы сохранить. Неплохо.
Теперь у меня есть другое представление, которое я хотел бы включить в панель сохранения, но если я просто переопределю -[NSDocument prepareSavePanel:]
и использую -setAccessoryView:
для вставки своего собственного представления, оно заменяет всплывающую кнопку типа файла, поэтому на панели сохранения отображается только мое представление, а не всплывающая кнопка.
Есть ли какой-либо способ, NSDocument
обеспечивающий одновременное отображение на панели сохранения моего собственного представления и всплывающего окна типа файла NSDocument? Похоже, я мог бы захватить существующий вспомогательный вид, вставить его вместе с моим собственным аксессуаром в контейнерный вид и вставить обратно, но это кажется довольно халтурным, и мне было интересно, есть ли какой-нибудь лучший способ сделать это, который я пропустил.
Ответ №1:
Нет, значительно лучшего способа нет. Может быть немного проще / приятнее:
- Создайте всплывающее окно типа файла в вашем собственном окне дополнительного представления
- Во время выполнения найдите
NSSavePanel
существующее всплывающее окно вспомогательного представления, - Вызовите
setTarget:
/setAction:
/setMenu:
в вашем всплывающем окне с аргументами, извлеченными из того, как установлено существующее всплывающее окно.
Именно так работает наше приложение, и это упрощает визуальное позиционирование всплывающего окна типа файла с остальными вашими элементами управления, поскольку все они находятся в одном и том же формате.