私のUIViewController
子孫には、4 つの「ブロック」のセットがあります。各「ブロック」はUIView
4 つの子です: two UILabel
、 one UIImageView
、および one UIView
。これらはすべてインターフェイス ビルダーで作成され、 を使用してクラスに接続されますIBOutlet
。
私のクラスには、対応するメンバーがいます:
IBOutlet UIView *block1;
IBOutlet UILabel *title1;
IBOutlet UILabel *text1;
IBOutlet UIImageView *image1;
IBOutlet UIView *separator1;
IBOutlet UIView *block2;
IBOutlet UILabel *title2;
IBOutlet UILabel *text2;
IBOutlet UIImageView *image2;
IBOutlet UIView *separator2;
IBOutlet UIView *block3;
IBOutlet UILabel *title3;
IBOutlet UILabel *text3;
IBOutlet UIImageView *image3;
IBOutlet UIView *separator3;
IBOutlet UIView *block4;
IBOutlet UILabel *title4;
IBOutlet UILabel *text4;
IBOutlet UIImageView *image4;
IBOutlet UIView *separator4;
これらの UIView に動的に設定するデータを取得しています。これは常に 4 つのセットであるため、各ブロックの初期化は同じです。理想的には、次のようなことをしたいと思います。
Block *block;
UIImage *img;
for(int i=1; i<=4; i++)
{
block = [response blockNumbered:i];
[<"title"+i> setText:[block getTitle]];
[<"text"+i> setText:[block getText]];
img = [block getImage];
if(img)
{
[<"image"+i> setImage:img];
}
[<"separator"+i> setHidden:![block needSeparator]];
}
(これは単純化されたコードであることに注意してください。実際には、この初期化にはさらに多くのことがあり、4 つのブロックのそれぞれに 200 行近くのコードがありますが、ロジックはまったく同じです。)文字列変数に名前を持っています!..
これを達成する方法はありますか?
PS コード内でこれらすべてのビューを対応するビューの配列として作成できることはわかっていますが、その場合はコード内でレイアウトも行う必要があります。UIViews
または、 の配列をas として宣言し、配列IBOutlet
内の各要素を IB で接続する方法はありますか?