Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 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 в построителе интерфейса:

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

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