XIB의 두 가지 방법을로드
- NSArray를 배열 * = [NSBundle mainBundle] loadNibNamed @ "테스트"소유자 : nil을 선택해 닐];
-
UINib *는 [UINib nibWithNibName는 : @ "테스트"번들 : 전무] = 펜촉; // 전무 기본값은 mainBundle입니다
NSArray를 배열 * = [instantiteWithOwer 펜촉 : 닐 개체 : 닐];
XIB 컨트롤러는 제어 방법에서 얻을 수 있습니다 :
- 모든 자식 컨트롤을 통해
// 直接遍历子控件设置数据 대한 (* UIView의 관점 에서 shopView.subviews) { 경우 ([도 isKindOfClass [UIImageView에의 클래스 ]) { 있는 UIImageView * = 이미지 뷰 (UIImageView에 * ) 도면; imageView.image = [있는 UIImage imageNamed : shop.icon]; } 다른 경우 ([도 isKindOfClass [UILabel의의 클래스 ]) { UILabel의 * 라벨 = (UILabel의 * ) 도면; label.text = shop.name; } }
- 바인딩 태그
// 설정 서브 제어부에 대응하는 태그 GET 데이터로 있는 UIImageView * iconImageView = (있는 UIImageView *) shopView viewWithTag을 : . 1 ] iconImageView.image = [있는 UIImage imageNamed : shop.icon] UILabel의 * NameLabel = (UILabel의 *) shopView viewWithTag : 2 ] nameLabel.text = shop.name;
XIB을 사용자 정의하려면 :
- ShopView, XIB 및 파일 이름과 일치 만들기 (가볍게 이름을, 그것은 차종 감지하는 것이 좋습니다)
- XIB에서 XIB의 ShopView 클래스에서 변경의 UIView
- 자식 컨트롤 내부 설정 데이터에
- 클래스 로딩 절차는 포장 XIB하는 방법을 제공
+ (Instancetype) shopView { 창 [[[NSBundle mainBundle] loadNibNamed : NSStringFromClass (자기) 소유자 : nil을 선택해 닐] lastObject]; } + (Instancetype) shopViewWithShop (* 숍 ) 숍 { //创建shopView ShopView
* shopView = [자기 shopView];
ShopView数据给//设置 shopView.shop = 가게; 반환 shopView을; }
XIB의 원리를로드
- 에 해당하는 레이어로 레이어 코드로 해결
- ( 무효 ) loadXib { XMGShopView * shopView = [XMGShopView ALLOC] initWithCoder : 닐]; shopView.frame = CGRectMake ( 0 , 0 , 70 , 90 ); shopView.backgroundColor = [UIColor whiteColor]; UIImageView에 * iconImageView = [UIImageView에 ALLOC] initWithCoder : 닐]; iconImageView.backgroundColor = [UIColor greenColor]; iconImageView.frame = CGRectMake ( 0 , 0 , 70 , 70 ); [shopView addSubview : iconImageView]; self.iconImageView = iconImageView; XMGLabel nameLabel = [XMGLabel ALLOC] initWithCoder : 닐]; nameLabel.backgroundColor = [UIColor greenColor]; nameLabel.frame = CGRectMake ( 0 , 0 , 70 , 70 ); [shopView addSubview : nameLabel]; self.nameLabel = nameLabel; }
- 유형, 밖으로로드 것에 XIB 컨트롤 유형입니다
- 그것을 입력 한 내용의 XIB의 자식 컨트롤은 오프라인의 유형입니다
- ALLOC / 초기화 또는 ALLOC으로 / initWithFrame 자동으로 XIB를로드 할 경우에도하지 않는 컨트롤을 만들 클래스 이름과 XIB 컨트롤의 이름으로
주의 사항 :
- 컨트롤이 코드를 작성하는 경우, 초기화 initWithFrame를 호출합니다
- 컨트롤이 XIB 또는 스토리 보드 작성하는 경우 초기화가 initWithFrame를 호출하지 않을, initWithCoder를 호출
- 제어가 XIB 또는 스토리 보드로 생성 된 경우, 이후에 초기화 방법의 완료로 awakeFromNib 호출
- 그것은로 awakeFromNib에서 초기화 추천