XIBの二つの方法をロードします
- NSArrayの配列* = [[NSBundle mainBundle] loadNibNamed:@ "テスト" 所有者:ゼロオプション:なし]。
-
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をカスタマイズするには:
- ShopView、XIBとそのファイル名と一致して作成します(軽く取ら名前を、理にかなっていることをお勧めします)
- XIBでは、XIB ShopViewは、クラスのUIViewから変更しました
- 子コントロールの内部設定データへ
- クラスのロード手順は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(0、0、70、90 )。 shopView.backgroundColor = [UIColor whiteColor]。 UIImageView * iconImageView = [[UIImageViewのalloc] initWithCoder:はnil]; 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 / initによってまたはのalloc / initWithFrameコントロールを作成しても自動的にクラス名となどXIBコントロールの名前場合、XIBをロードしません。
注意点:
- コントロールがコードを介して作成された場合、初期化はinitWithFrameを呼び出します
- コントロールがXIBやストーリーボードで作成された場合、初期化は、initWithFrameを呼び出すための呼び出しを行っていないinitWithCoder
- 初期化方法の完了awakeFromNibを呼び出した後、制御は、XIB又はストーリーボードにより作成された場合
- これはawakeFromNibで初期化推奨します