2015-04-28 7 views
2

У меня есть CustomViewController, созданный с помощью XIB.Как загрузить NIB из NIB в iOS

Я также создал CustomView через другой файл XIB, который является подклассом UIS.

Затем я вывожу UIView для CustomViewController и устанавливаю его класс в CustomView.

Проблема здесь: тогда я запустил это приложение. Я не видел содержимое CustomView, которое я создал в CustomView XIB.

Почему и как я могу это исправить?

Мне нужно иметь CustomView в CustomViewController, потому что мне нужно установить макет этого представления.

я могу загрузить этот CustomView из ViewDidLoad, но мне нужно, чтобы загрузить его из XIB

UIView *v = [[[NSBundle mainBundle] loadNibNamed:@"TopSegmentedControl" owner:self options:nil] firstObject ]; 
[self.view addSubview:v]; 
+0

Я не думаю, что это возможно. Возможно, вы сможете использовать IBDesignable в классе, который загружает xib-файл. – Tobias

+0

Попробуйте переопределить initWithCoder: в вашем подклассе UIView return [[[NSBundle mainBundle] ..// etc]]; – Jef

+0

Jef, я пробовал, имел ошибку –

ответ

2

Я думаю, что вы должны думать о смене UIView подкласса так, что он наследует от UIViewController, и добавляется к иерархии, как ребенок ViewController. Если вы это сделаете, вы можете добавить объект containerView из палитры инспекторов в конструктор интерфейса во внешний вид viewControllers, и он добавит новый (наконечник внутри наконечника), чтобы вы могли вставить все в.

Я думаю, что из недавних изменений в какао и cocoaTouch, что Apple не хочет, чтобы мы загрузили простые виды из ножей. Обратите внимание, что прокси-сервер «владелец файла» вверху теперь помечен как «ViewController»

+1

Определенно, что я хотел бы предложить. –

+0

Как я могу получить рабочий макет здесь? Этот вид не изменяет размеры для устройств с отклонением –

1

Вы собираетесь должны поставить код, который вы включены там в initWithCoder: метод вашего UIViewController. Это метод инициализации, который вызывается, когда он инициализируется из раскадровки. Предполагая, что вы подключили выход к нему по имени myView:

- (id)initWithCoder:(NSCoder *)aDecoder { 
    if ((self = [super initWithCoder:aDecoder])) { 
     self.myView = [[[NSBundle mainBundle] loadNibNamed:@"TopSegmentedControl" owner:self options:nil] firstObject]; 

     return self; 
    } 
} 
+0

Как я могу получить рабочий макет здесь? Этот вид не изменил размер для устройств с отклонением –