XIB 사용자 지정 컨트롤에 의해

XIB의 두 가지 방법을로드

  1. NSArray를 배열 * = [NSBundle mainBundle] loadNibNamed @ "테스트"소유자 : nil을 선택해 닐];
  2. 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을 사용자 정의하려면 :

  1. ShopView, XIB 및 파일 이름과 일치 만들기 (가볍게 이름을, 그것은 차종 감지하는 것이 좋습니다)
  2. XIB에서 XIB의 ShopView 클래스에서 변경의 UIView
  3. 자식 컨트롤 내부 설정 데이터에
  4. 클래스 로딩 절차는 포장 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에서 초기화 추천

추천

출처www.cnblogs.com/wwjwb/p/12650271.html