XIBカスタムコントロールにより、

XIBの二つの方法をロードします

  1. NSArrayの配列* = [[NSBundle mainBundle] loadNibNamed:@ "テスト" 所有者:ゼロオプション:なし]。
  2. UINib *ペン先= [UINib nibWithNibName: "テスト" バンドル@:nilを]; // nilのデフォルトはmainBundleです

    NSArrayの配列* = [ニブinstantiteWithOwer:なしオブジェクト:なし]。

XIBコントローラは、制御方法で取得します:

  • すべての子コントロールを通じ
  // 直接遍历子控件设置数据

 ため(UIViewの*ビューshopView.subviews){ 

        場合([図isKindOfClass:[UIImageView クラス]]){ 

            UIImageView * ImageViewの=(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(自己)所有者:ゼロオプション:なし] lastObject]。

}

 +(Instancetype)shopViewWithShop:(*ショップ)ショップ

{ //创建shopView  ShopView

    
* shopView = [自己shopView]。
 ShopView数据给//设置   shopView.shop
= 店。   リターンshopView。 }

XIBの原則をロード

  • コードに分解し、対応する層ごと
- (ボイド)loadXib 

{ 

    XMGShopView * shopView = [[XMGShopView ALLOC] initWithCoder:なし]。

    shopView.frame = CGRectMake(007090 )。

    shopView.backgroundColor = [UIColor whiteColor]。

    

    UIImageView * iconImageView = [[UIImageViewのalloc] initWithCoder:はnil]; 

    iconImageView.backgroundColor = [UIColor greenColor]。

    iconImageView.frame = CGRectMake(007070 )。

    [shopView addSubview:iconImageView]。

    self.iconImageView = iconImageView。

    

    XMGLabel nameLabel = [[XMGLabel ALLOC] initWithCoder:なし]。

    nameLabel.backgroundColor = [UIColor greenColor]。

    nameLabel.frame = CGRectMake(007070 )。

    [shopView addSubview:nameLabel]。

    self.nameLabel = nameLabel。    

}
  • 、アウトロードどのようなタイプでXIBコントロールがどのタイプであります
  • それが入力する内容のXIBの子コントロール、どのようなタイプのオフラインの
  • alloc / initによってまたはのalloc / initWithFrameコントロールを作成しても自動的にクラス名となどXIBコントロールの名前場合、XIBをロードしません。

注意点:

  • コントロールがコードを介して作成された場合、初期化はinitWithFrameを呼び出します
  • コントロールがXIBやストーリーボードで作成された場合、初期化は、initWithFrameを呼び出すための呼び出しを行っていないinitWithCoder
  • 初期化方法の完了awakeFromNibを呼び出した後、制御は、XIB又はストーリーボードにより作成された場合
  • これはawakeFromNibで初期化推奨します

おすすめ

転載: www.cnblogs.com/wwjwb/p/12650271.html