Заменить подпредставление NSSplitview пользовательским представлением - PullRequest
1 голос
/ 30 января 2012

Мне еще есть чему поучиться с какао, поэтому я, возможно, упустил что-то очевидное здесь.У меня есть пользовательское представление, которое я хотел бы отобразить в nssplitview, который заменяет текущее подпредставление там.

У меня есть файл MessageView.xib и MessageView .h / .m, которые подклассы NSView.Я создал пользовательский экземпляр представления для моего главного окна (того, которое содержит nssplitview) через встроенный графический интерфейс Xcode 4.Я создал выход для этого экземпляра MessageView в контроллере моего окна.

В моем контроллере для окна, когда я хочу поменять подпредставление для splitview, он запускает этот

 [splitView replaceSubview:[[splitView subviews] objectAtIndex:1] with:viewMessage];

viewMessageявляется выходом для MessageView.

Когда этот код выполняется, отображение этого подпредставления меняется на пустое.Я не уверен, что с моим пользовательским представлением что-то не так или есть проблема с размером.Есть ли что-то, что мне нужно сделать, чтобы вписать вид в разделенный экран или мой пользовательский вид просто не отображается правильно?Мне было трудно найти учебник по созданию пользовательских подпредставлений с Xcode 4, поэтому я не уверен, что с этим что-то не так.В пользовательском представлении есть только метка и текстовое поле.

1 Ответ

3 голосов
/ 30 января 2012

Как правило, вам не нужно заменять подвиды NSSplitView вашими собственными. Вместо этого вы добавляете свои собственные пользовательские представления в качестве дочерних представлений подпредставлений по умолчанию на каждой стороне разделителя. Вы можете сделать это в коде с addSubview:, но, вероятно, проще использовать Interface Builder в Xcode. Перетащите «Пользовательское представление» в разделенное представление, затем в Identity Inspector в разделе «Пользовательский класс» измените класс на имя вашего пользовательского подкласса NSView:

enter image description here

Я думаю (вне головы, не проверено), если вам действительно нужно заменить подпредставления NSSplitView по умолчанию своим собственным классом, вы, вероятно, можете сделать это в Интерфейсном Разработчике, используя тот же метод, но выбрав по умолчанию подвид и изменение его класса в инспекторе. Это не работает для всех классов AppKit, но может работать для NSSplitView.

...