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 }
}