4

ペン先とそれに付随する.h/.mファイルを使用してカスタムビューを作成し、IBを介してそのビューの複数のインスタンスを作成し、それらを別のビューのサブビューとして使用しようとしています。

  1. .h/.mファイルを作成しました
  2. xibを作成しました。
  3. xibについては、IBでクラス名を指定します。
  4. xibにいくつかのラベルを追加します(値はプログラムで変更されます)
  5. ストーリーボードの単純なビューをコンテナビューにドラッグします。
  6. ドラッグしたビューのクラスを、xibに指定したクラスに設定しました。

手順5と6を複数回実行します。必要なビューごとに1回実行します。最終的には、これらのビューを親ビュークラスのIBOutletsに接続します。

カスタムビューにラベルが表示されないため、明らかに私は何か間違ったことをしています。コレクション/テーブルビューの場合と同じように、ペン先をビューに直接関連付ける必要があると思いますが、これを行う場所が見つかりません。

これを行う正しい方法は何ですか?プログラムでビューを追加できると思いますが、さまざまなデバイス(iphone 4と5など)のレイアウトをどのように処理しますか?

4

2 に答える 2

7

以下に概説することはうまくいくようです

1)カスタムビューのxibファイルと.h/.mファイルを作成します。
1a)制御する要素を表示するためにIBOutletsが必要であると仮定して、ファイルの所有者にIDインスペクターの.hファイルで定義されたクラス名を指定します。

2).hファイルでプロパティを定義します

@property (nonatomic, retain) IBOutlet UIView *contentView;

2a)プログラムでアクセスするxib内のすべてのサブビューのアウトレットを定義します。

3).mファイルでプロパティを合成し、

- (void)awakeFromNib
{
    NSLog(@"awake from nib");
    [[NSBundle mainBundle] loadNibNamed:@"yourNibName" owner:self options:nil];
    [self addSubview:self.contentView];
}

4)空のビューをパレットからストーリーボードのコンテナにドラッグします。これらのビューのクラスを、.hファイルで定義されているクラス名に変更します。

アプリを実行すると、サブビューにxibの内容が表示されます。

5)コンテナビューの.hファイルでカスタムサブビューインスタンスへのアウトレットを定義し、ストーリーボードで通常どおりに接続できるようになりました。

于 2013-01-22T13:06:18.923 に答える
2

xibでビューを作成し、ストーリーボードで使用することはできません。すでにxibファイルで作成している場合は、コピーしてストーリーボードに貼り付けることができます。コントローラのルートビューにしたい場合は、コントローラで取得したビューを削除し、xibからビューを貼り付けます。次に、これらのビューのクラスをカスタムクラスに変更できます。

「別のビューの子」が何を意味するのかわかりません。ビューには親子関係がなく、ビューとサブビューの関係です。また、通常(これまで?)ビューをコンテナビューにドラッグすることはありません。コンテナビューには、コンテナビューを別のビューに追加すると自動的に取得されるビューコントローラが含まれています。そのコントローラーは、ビューにコンテナービューが含まれているコントローラーの子です。カスタムビューをそのコンテナビューがある場所に表示する場合は、そのビューを子コントローラのビューに追加します(またはそのビューを自分のビューに置き換えます)。

于 2013-01-22T02:16:01.673 に答える