IBOutletCollection は正しい順序であることが保証されていますか? 質問する

IBOutletCollection は正しい順序であることが保証されていますか? 質問する

NSArray を使用した IBOutletCollection に関して、矛盾する 2 つの情報源があります。1 つ目は、インターフェイスからアウトレット コレクションにリンクする順序が重要であり、アウトレット コレクションでは常に同じになるというものです。たとえば、最初のテキスト フィールドを最初にコレクションにリンクすると、要素番号 0 がそのフィールドになります。

しかし、別の情報源によると、これは間違っており、実際にはアウトレット コレクションはランダム化されており、順序にはまったく保証がないとのことです。したがって、要素番号 0 は、インターフェイスで最初に接続されたテキスト フィールドだけでなく、任意のテキスト フィールドになることができます。

「iOS 6 プログラミング - iOS SDK の探索」が最初の情報源で、iTunes に関するスタンフォードのコースが 2 番目の情報源です。どちらが正しいでしょうか?

ベストアンサー1

コントロールの順序を割り当てtag、ロード時に順序を変更するだけです。


プロパティの監視:

@IBOutlet var btnCollection: [UIButton]! {
    didSet {
        btnCollection.sort { $0.tag < $1.tag }
    }
}

viewDidLoad 内:

override func viewDidLoad() {
    super.viewDidLoad()
    btnCollection = btnCollection.sorted { $0.tag < $1.tag }
}

おすすめ記事