Ответ 1
Как вы уже знаете, с UIViewController
у нас есть метод -initWithNibName:bundle:
для его соединения с xib.
Но...
Когда дело доходит до UIView
, вам нужно использовать -loadNibNamed:owner:options:
и загрузить его с помощью xib. (просто указание пользовательского класса на представление в xib не будет работать)
Пусть:
- Создал подкласс
UIView
под названиемCustomXIBView
- (Новый файл > Cocoa Touch > Objective-C Класс - подкласс
UIView
)
- (Новый файл > Cocoa Touch > Objective-C Класс - подкласс
- Создал простой пользовательский интерфейс и назвал его
CustomXIBView
- (Новый файл > Пользовательский интерфейs > Вид)
Шаги:
- Перейдите к
CustomXIBView
nib - Выберите
View
(левая панель инструментов) - Выберите
Show Identity Inspector
(третий вариант на панели справа) - Укажите
CustomXIBView
как Пользовательский классView
- ничего не делать с
CustomXIBView
File Owner
в nib
- ничего не делать с
- Перетащите объекты Drop и подключите их с помощью
CustomXIBView.h
код:
//To load `CustomXIBView` from any `UIViewController` or other class:
//instead of the following commented code, do the uncommented code
//CustomXIBView *myCustomXIBViewObj = [CustomXIBView alloc] init];
//[myCustomXIBViewObj setFrame:CGRectMake(0,0,320,480)];
//Do this:
CustomXIBView *myCustomXIBViewObj =
[[[NSBundle mainBundle] loadNibNamed:@"someView"
owner:self
options:nil]
objectAtIndex:0];
[myCustomXIBViewObj setFrame:CGRect(0,
0,
myCustomXIBViewObj.frame.size.width,
myCustomXIBViewObj.frame.size.height)];
[self.view addSubview:myCustomXIBViewObj];