Как мне правильно загрузить объект, являющийся подклассом NSView, с помощью Xib?
Я хочу, чтобы он загружался динамически, а не с самого начала, поэтому я сделал MyView.Xib Из MyDocument.m я сделал:
MyView *myView = [[MyView alloc] initWithFrame:...];
[NSBundle loadNibNamed:@"MyView" owner:myView];
[someview addSubview:myView];
...
, и фон в порядке (он вызывает drawrect: и он отрисовывается, как ожидалось)
но все кнопки, которые я поставил на xib, не появятся.
Я проверил, и они загружены, НО их супервизор - это не тот же объект, что и myView
.
Почему это? Я думаю, что мне чего-то не хватает в Xib, но я не знаю, что именно. Другими словами: как мне убедиться, что корневое представление в моем xib является тем же объектом, что и владелец файла?
Хотелось бы, чтобы было что-то подобное для Mac:
NSArray* nibViews = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil]; //in iOS this will load the xib
MyView* myView = [ nibViews objectAtIndex:1];
[someview addSubview:myView];
...
Заранее спасибо.
ИЗМЕНИТЬ
Я думаю, что понял причину проблемы ... (??)
В классе MyView у меня есть различные IBOutlet, которые правильно подключены в IB, поэтому они загружаются нормально (я могу их сослаться). Однако для вида сверху нет IBOutlet. Поэтому, когда NSBundle загружает перо, вид сверху назначается какому-то другому объекту. Я думал, что это произойдет, если я установлю вид сверху в IB как из класса: MyView
и поставлю myView
в качестве владельца в [NSBundle loadNibNamed: @ "MyView" owner : myView];
но, похоже, это не так.
Что я делаю неправильно?