NSSplitViewController не рушится при создании из раскадровки

Я пытаюсь имитировать поведение таких приложений, как «Заметки» и «Контакты», где при изменении размера окна рушится левый элемент разделенного представления. Я не могу воссоздать это поведение при использовании раскадровки.

Если я создаю NSSplitViewController в коде, это работает нормально, однако, если я делаю это через раскадровку, это не работает.

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, когда оно исходит из раскадровки, чтобы заставить работать поведение коллапса.

Код:

Код

Раскадровка:

Раскадровка


person Community    schedule 25.01.2019    source источник


Ответы (2)


В вашем проекте не определен элемент разделенного представления. Когда вы делаете это в коде, вы определяете приоритет удержания, устанавливая поведение разделенного представления в качестве боковой панели. Вы также можете сделать это в построителе интерфейса, если вы не удалите сами разделенные представления из построителя интерфейса. Однако сворачивание боковой панели должно выполняться в коде. Глядя на приложение контактов, я полагаю, что они отслеживают размер окна и сворачивают боковую панель, когда она достигает жестко заданного размера.

person TimTwoToes    schedule 14.02.2019

(Отвечая на мой собственный вопрос)

Я получил отзыв от Apple о Radar, который я подал для этого. Я могу подтвердить, что проблема теперь исправлена ​​​​в macOS Catalina beta 5.

person Community    schedule 06.08.2019