IBOutlet配列のようなものを使用することはできますか?
-
20-09-2019 - |
質問
現在の iPhone アプリには、コードによって入力されるトップ リスト ビューがあります。Interface Builder を使用してビューを組み立てたので、多くのものが含まれています UILabel
s.
明らかに、私はそうしたくありません name1
, name2
, 、など。私のクラスにはアウトレットがありますが、 name[10]
配列。
そうすることで、各項目を適切なラベル (またはビューなどの他のインターフェイス ビルダー) に接続することは可能ですか?
解決
あなたはIBでそれを行うことはできませんが、あなたはinit
メソッドで配列を作成し、そこにすべてのあなたのラベルを追加することができます。
ところで、あなたは、各ラベルにいくつかのタグを設定し、それをアクセスするためのマクロを定義することができます。
のようななめらか#define NAME[TAG] (UILabel*)[self.view viewWithTag:TAG]
他のヒント
あなたはもちろん、インターフェイスビルダーでこれを行うことができ、キーワードがIBOutletCollection
です。何それがないと、複数のインターフェイスビルダー店の外には基本的にNSArrayです。
IBOutletCollection(UILabel) NSArray *myLabels;
だから、次のことがインターフェイスビルダーにラベルを結ぶことになると、あなたは、実行時にすべてのラベルにアクセスするために、配列を使用することができます。
これは、この関連する質問する を参照して、コンセントのコレクションを使用して行うことができます。
次の手順に従ってアウトレットの配列を作成し、それを IB 要素に接続します (これは例です) UIView
, 、使用できます UILabel
また):
- IBOutlet の配列を作成する
- Storyboard ViewController インターフェイスに複数の UIElement (ビュー) を追加します。
- ViewController (ストーリーボード内) を選択し、接続インスペクターを開きます
- 接続インスペクターには「アウトレットコレクション」オプションがあります(そこにアウトレットの配列が表示されます)
- if をインターフェイス要素に接続します
-
class ViewController2: UIViewController {
@IBOutlet var collection:[UIView]!
override func viewDidLoad() {
super.viewDidLoad()
}
}
所属していません StackOverflow