2

У меня есть основанный на представлении NSOutlineView, что я предоставляю пользовательский вид (подкласс NSTableCellView) для одного из столбцов. Я регистрация этого подвид с помощью:Пользовательский вид в NSTableView/NSOutlineView

let nib = NSNib(nibNamed: "MyMatcherView", bundle: NSBundle.mainBundle()) 
outlineView.registerNib(nib, forIdentifier: "matcher") 

Когда я звоню outline.makeViewWithIdentifier("matcher"), она успешно возвращает мне экземпляр моего настраиваемого представления. Ура!

В интерфейсе Builder, однако, я заметил, что могу полностью удалить элемент управления NSTableCellView из столбца matcher (см. Ниже). возникают

Table view in Interface Builder

Два вопроса:

  • Я предполагаю, что он работает во время выполнения, так как вызов registerNib() говорит таблицу использовать, что перо, вместо того, что бы было определено с помощью интерфейса Builder. Это верно?
  • В контексте меня предоставления пользовательского представления, что является элементом управления Text Cell, который вы можете увидеть на скриншоте ниже. Я не могу удалить его, и я не совсем уверен, что он представляет.

ответ

2

Представления, которые вы можете определить в IB в столбце таблицы, фактически находятся в суб-NIB (NIBs-in-a-NIB), и они предварительно зарегистрированы на основе их идентификаторов. Итак, да, когда вы регистрируете новый NIB для данного идентификатора, вы заменяете его на NIB, содержащий табличное представление. Он больше не будет использоваться, поэтому вы можете удалить его из этого NIB.

Текстовая ячейка - это остаток от табличных табличных представлений. Он не может быть удален в IB, и даже если вы удалите его с помощью текстового редактирования файла .xib, он будет восстановлен при следующем открытии его в IB. Я не уверен, почему IB настаивает на его сохранении и не просто скрывает это. Вы должны просто игнорировать его (хотя вы, вероятно, должны очистить свой заголовок в инспекторе атрибутов, если вы экспортируете строки для локализации, или вашим переводчикам будет предложено перевести «Текстовую ячейку» без уважительной причины).

+0

Спасибо, Кен, это прекрасно. Все, казалось, работало нормально, но приятно узнать немного больше об основных причинах. Большое спасибо. –

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