Я написал Swift-версию контента по ссылке из ответа @ Nathan, которая работает для меня. В контексте моего примера splitView
установлено в другом месте, вероятно, в качестве свойства экземпляра для охватывающего класса:
func toggleSidebar () {
if splitView.isSubviewCollapsed(splitView.subviews[1] as NSView) {
openSidebar()
} else {
closeSidebar()
}
}
func closeSidebar () {
let mainView = splitView.subviews[0] as NSView
let sidepanel = splitView.subviews[1] as NSView
sidepanel.hidden = true
let viewFrame = splitView.frame
mainView.frame.size = NSMakeSize(viewFrame.size.width, viewFrame.size.height)
splitView.display()
}
func openSidebar () {
let sidepanel = splitView.subviews[1] as NSView
sidepanel.hidden = false
let viewFrame = splitView.frame
sidepanel.frame.size = NSMakeSize(viewFrame.size.width, 200)
splitView.display()
}
Эти функции, вероятно, будут методами в классе, они для меня. Если ваш splitView
может быть nil
, вы, очевидно, должны это проверить. Это также предполагает, что у вас есть два подпредставления и одно с индексом 1, здесь sidePanel
- это то, которое вы хотите свернуть.