Я создал простой NSViewController
и хочу добавить разделенный вид только с одним дочерним видом. Сплит-просмотр должен контролироваться NSSplitViewController
, потому что я хотел бы использовать средства NSSplitItem
для разворачивания/расширения разделенных элементов. После добавления контроллера дочернего представления создается элемент разделения, но в дереве представлений не отображается дочерний вид.NSSplitViewController Child View Not Added
override func viewDidLoad() {
super.viewDidLoad()
let splitViewController = NSSplitViewController()
view.addSubview(splitViewController.splitView)
let myController = MyController(nibName: "MyController", bundle: nil)
splitViewController.addChildViewController(myController)
printTree(view)
}
func printTree(view: AnyObject, _ n: Int = 1) {
if let view = view as? NSView {
NSLog("\(n): \(view)")
for child in view.subviews {
printTree(child, n + 1)
}
}
}
Выход:
1: <NSView: 0x618000120140>
2: <NSSplitView: 0x6180001205a0>
Почему в виде раскола имеет не вид ребенка?
Для сравнения, вот версия без зрения разделенного:
override func viewDidLoad() {
super.viewDidLoad()
let myController = MyController(nibName: "MyController", bundle: nil)
view.addSubview(myController.view)
printTree(view)
}
Выход:
1: <NSView: 0x6100001203c0>
2: <NSView: 0x6000001208c0> <-- here's my child view
3: <NSButton: 0x600000140580>
А добавив вид ребенка непосредственно как подвид на вид раскола Безразлично» t:
A SplitView managed by a SplitViewController cannot have its subviews modified
Итак, мой вопрос: почему дочернее представление не добавлено в дерево представлений внутри разделенного представления?
Я нашел свою ошибку (см. Мой ответ), это была еще одна проблема. По вашей ссылке помог мне найти ее, так что спасибо в любом случае :) –