OS-X: как предотвратить изменение размера контроллера представления, который представлен в виде листа

Есть ли способ предотвратить изменение размера представления, если контроллер представления представлен в виде листа, используя метод presentViewControllerAsSheet или используя сегмент стиля "лист".

Обратите внимание, что модальные /show segues могут быть имплантированы в оконный контроллер, который может быть установлен как не изменяемый из самого раскадровки. Segues типа popover по умолчанию не изменяются по размеру.

Любая помощь будет заметна. enter image description here

Ответ 1

Пробовали ли вы настроить свой контроллер просмотра листа -preferredContentSize? В противном случае, как добавить ширину и высоту NSLayoutConstraint к виду контроллера просмотра на -viewDidLoad?

Ответ 2

приведенные выше методы не помогли мне. self.view.autoresizesSubviews = NO; эта строка в viewcontroller должна делать трюк, если вышеуказанные методы не работают

Ответ 3

Ни один из других решений не работал у меня, поэтому я закончил использование NSWindow в качестве контроллера листа (а не только NSViewController).

Объявить объект NSWindowController в файле заголовка:

NSWindowController *detailWindow;

Чтобы открыть окно в виде листа, используйте следующий код:

NSStoryboard *storyFile = [NSStoryboard storyboardWithName:@"Main" bundle:nil];
detailWindow = [storyFile instantiateInitialController];
[self.view.window beginSheet:detailWindow.window completionHandler:nil];

Чтобы закрыть окно:

[self.view.window endSheet:detailWindow.window];

Чтобы не изменять размер окна, просто установите минимальный/максимальный размер NSWindow в построителе интерфейса:

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

Что это, супер легко! (Не забудьте установить оконный контроллер в качестве начального контроллера).