web-dev-qa-db-ja.com

Swift配列に複数のIBOutletsを置く

Multiple IBOutlets

これらを作成しました(赤い枠でマーク)ctrl + drag

しかし、私はまったく同じ行を9回(DRY)持つのは好きではありません

これらのIBOutletsを配列に入れるにはどうすればよいですか?

28
CorPruijs

次のようにSwiftで汎用アウトレットコレクションを定義できます。

@IBOutlet var collectionOfViews: Array<UIView>? // = [UIView]?

またはUIButtonオブジェクト:

@IBOutlet var collectionOfButtons: Array<UIButton>? // = [UIButton]?

通常はファイルの所有者にあるように、Outlet Collectionsグループでコレクションを見つけることができます。

Outlet Collections

5つのランダムなボタンを接続すると、コンソールに表示されます。

Connected UIButton instances to Collection

40
holex

以下の手順に従って、アウトレットの配列を作成し、IB Elementsに接続します。

  • IBOutletsの配列を作成する
  • Storyboard ViewControllerインターフェイスに複数のUIElement(ビュー)を追加します
  • ViewController(ストーリーボード内)を選択し、接続インスペクターを開きます
  • 接続インスペクターにオプション「アウトレットコレクション」があります(そこにはアウトレットの配列が表示されます)
  • インターフェイス要素でifを接続します

-

class ViewController2: UIViewController {


    @IBOutlet var collection:[UIView]!


    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

enter image description here

20
Krunal

ここでの解決策 Swift-IBOutletCollectionと同等

@IBOutlet var objectCollection:[オブジェクト]

1
hannesr

コードとストーリーボードの両方が表示される2つのビューペインから始めます。 UIからコードへの最初のIBOutlet接続を作成するときは、[接続]ドロップダウンフィールドを注意深く見て、[アウトレットコレクション]というオプションを選択してください。これにより、IBOutletsの配列が自動的に作成されます。次に、配列が作成されるコード内に配置された円内の小さな黒い円を探します。この円から、同じコレクションに接続する他のすべてのUIオブジェクトにドラッグするだけです(タイプを混合できるかどうかはわかりません)。同様に、作成された最初の黒い点からそのアクションに結び付けたい他のすべてのオブジェクトにドラッグすることにより、すべてのオブジェクトを1つのアクションに接続できます。また、EnumerateSequence()を検討して、このコレクションの操作を支援してください。甘いでしょ?

0
Mark Ebert