"Владелец файла" пользовательского XIB

Если я создаю отдельный файл пера и загружаю его в свой вьюконтроллер и присваиваю его ivar like so:

self.loadview=[[[NSBundle mainBundle] loadNibNamed:@"загрузка" owner:self options:nil] objectAtIndex:0];

Можно ли создавать IBOutlets для любой вещи на нем в пере, например, для индикаторов активности? Будет ли владелец файла - это viewcontroller, хотя IB об этом и не знает, так как он сделан объектом в коде?

Является ли загрузка пера так, как я это делал, приемлемой практикой?

Возможно, более приемлемой практикой также является создание .h/.m, и использование его в качестве класса для XIB, и в этом случае владелец файла - это новый пользовательский класс; однако, при создании ivar из пользовательского класса мне все равно придется использовать описанный выше метод в своем контроллере, не так ли? Или есть лучший способ сделать всё это, не используя xib контроллера?

UPDATE: Основываясь на некоторых ответах, я сделал следующее. Я избавился от метода NSBundle выше, а вместо этого просто сделал следующее:

@свойство (неатомное, сохранить) IBOutlet UIView* просмотр загрузки;

В nib-файле для этого вида, я нажимаю на File's Owner и изменяю Custom Class на мой view-контроллер. Затем я управляю перетаскиванием из Владельца файла во Вид, и он отлично связан.

Я бы предположил, что в данный момент в моем контроллере есть IVAR, self.load view, который содержит информацию в окошке. Однако это не так. Я удалил метод NSBundle, предполагая, что контроллер теперь будет загружать перо непосредственно через розетку IB, но вид в пере не отображается, и я не могу контролировать его в контроллере.

Я также удалил это, когда удалил метод NSBundle:

.

[self.view addSubview:self.loadview];

Я не понимаю, как на самом деле вид отображается в данный момент; и если он отображается, то где в видовой герархии он появляется? возможно, он стоит за другими видами. Я тоже пробовал:

.

[self.view bringSubviewToFront:self.loadview];

Но вида просто нет. В попытке найти его я сделал:

//[self.view bringSubviewToFront:self.loadview];

NSLog(@"index: %i",[[self.view subviews]indexOfObject:self.loadview]);

как с комментируемой частью, так и без неё. Получаю:

index: 2147483647

6
задан johnbakers 25 August 2011 в 15:05
поделиться