Я пытаюсь имитировать поведение таких приложений, как «Заметки» и «Контакты», где при изменении размера окна левый разделенный элемент рухнет. Я не могу воссоздать это поведение при использовании раскадровки.
Если я создаю NSSplitViewController в коде, это работает нормально, однако, если я делаю это через раскадровку, это не работает.
Я создал урезанный проект, единственное отличие которого состоит в том, как создается экземпляр NSSplitViewController:
https://github.com/peteog/NSSplitViewControllerIssue
См. Строки MainWindowController 11 и 12, если вы переключите комментарии, а затем запустите пример приложения, вы увидите разницу в поведении:
import Cocoa
class MainWindowController: NSWindowController {
override var windowNibName: NSNib.Name? {
return "MainWindowController"
}
override func windowDidLoad() {
super.windowDidLoad()
// let splitViewController = NSSplitViewController()
let splitViewController = NSStoryboard(name: "Storyboard", bundle: nil).instantiateInitialController() as! NSSplitViewController
let sidebarSplitViewItem = NSSplitViewItem(sidebarWithViewController: SidebarViewController())
splitViewController.addSplitViewItem(sidebarSplitViewItem)
let contentSplitViewItem = NSSplitViewItem(viewController: ContentViewController())
splitViewController.addSplitViewItem(contentSplitViewItem)
contentViewController = splitViewController
}
}
Я не могу сказать, является ли это ошибкой или есть свойство, которое мне не хватает в NSSplitViewController, когда оно исходит от раскадровки, чтобы заставить работать поведение свертывания.
Код:
Раскадровка: