2012-01-29 6 views
1

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

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

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

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

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

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

+0

Вы когда-нибудь это выясняли? – livingtech

+1

Похоже, это исправляет это: http://stackoverflow.com/q/1419038/18961 – livingtech

ответ

3

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

enter image description here

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

+0

На этот вопрос не ответит. Вы предлагаете использовать подкласс, но вопрос заключается в том, как заменить или заменить существующее представление во время выполнения. У меня есть такая же потребность. (Как и Wakjob ниже.) Я, вероятно, пост снова здесь, когда я получу эту работу. – livingtech

+1

Не было (до сих пор не понятно), почему OP хочет заменить подчиненное представление по умолчанию split view своим собственным во время выполнения, вместо того, чтобы добавлять собственное представление в качестве дочернего представления, которое является стандартным подходом. Я не утверждаю, что это никогда не было основанием для этого, но когда начинающий самостоятельно спрашивает совета, я склоняю их к стандартному подходу, если нет ясной причины сделать что-то более сложное. В отличие от связанного с вами вопроса, он явно не указывает, что он переключается между несколькими видами во время выполнения. –

 Смежные вопросы

  • Нет связанных вопросов^_^