Interface Builder にある多数の UIImageViews を使用して配列を作成したいと考えています。20または30の代わりに
IBOutlet UIImageView *img1;
それらをすべてリンクしてから配列に入れると、IBOutlet UIImageViewsの配列を宣言する方法はありますか?
ヘッダーファイルにそれほど多くの宣言がないようにします。
Interface Builder にある多数の UIImageViews を使用して配列を作成したいと考えています。20または30の代わりに
IBOutlet UIImageView *img1;
それらをすべてリンクしてから配列に入れると、IBOutlet UIImageViewsの配列を宣言する方法はありますか?
ヘッダーファイルにそれほど多くの宣言がないようにします。
可能です、いわゆるアウトレットコレクションです。これは、アウトレット コレクションを定義する方法です。
@property(retain) IBOutletCollection(UIImageView) NSArray *images;
Interface Builder のアウトレットに複数のオブジェクトを貼り付けることができるようになりました。配列は、インターフェイスが読み込まれるときに作成されます。
私はここで少し遅れていますが、IB で各 ImageView のタグ プロパティを設定し、それぞれ[some_superview viewWithTag:tag]
に個別のハンドルを保持するよりも、同じようにアクセスする方が簡単かもしれません。
残念ながらありませんが、すべての宣言を 1 行にまとめることはできます。
IBOutlet UIImageView *img1, *img2, *img3, *img4;
もう 1 つのオプション (これらが非常に多いため、おそらく最適です) は、プログラムで作成して配列に格納し、View Controller クラスからビューに追加して、for each を使用することです。
[self.view addSubview:img];
また、要素が (背景要素のように) 静的であり、実際にそれらにアクセスする必要がない場合は、それぞれのアウトレットを宣言する必要がないことに注意してください。それらをnibファイルに追加するだけで、忘れることができます。
UIButton
インスタンスについても同様です。ボタンについて何も変更する必要がない場合は、次のように、呼び出したメソッドからアクセスできます。
-(IBAction) buttonPressed:(id)sender {
UIButton *button = (UIButton *)sender;
// method guts
// stuff with button -- access tag, disable, etc
}