Если я создаю отдельный файл пера и загружаю его в свой вьюконтроллер и присваиваю его 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