2016-06-16 6 views
0

Xcodeが「インデックス作成」時にフリーズし始めてプロジェクトを実行できないため、コードを少しきれいにする必要があると思います。私はそれが簡単だと思いますが、私はどのような方法が最善であるか分かりません。 36のUIImageViewsは...コードをクリーンアップしますか? (Xcodeがインデックス作成時にフリーズする)

@IBOutlet var Image1: UIImageView! 
@IBOutlet var Image2: UIImageView! 
@IBOutlet var Image3: UIImageView! 
@IBOutlet var Image4: UIImageView! 
@IBOutlet var Image5: UIImageView! 
@IBOutlet var Image6: UIImageView! 
@IBOutlet var Image7: UIImageView! 
@IBOutlet var Image8: UIImageView! 
@IBOutlet var Image9: UIImageView! 
@IBOutlet var Image10: UIImageView! 
@IBOutlet var Image11: UIImageView! 
@IBOutlet var Image12: UIImageView! 
@IBOutlet var Image13: UIImageView! 
@IBOutlet var Image14: UIImageView! 
@IBOutlet var Image15: UIImageView! 
@IBOutlet var Image16: UIImageView! 
@IBOutlet var Image17: UIImageView! 
@IBOutlet var Image18: UIImageView! 
@IBOutlet var Image19: UIImageView! 
@IBOutlet var Image20: UIImageView! 
@IBOutlet var Image21: UIImageView! 
@IBOutlet var Image22: UIImageView! 
@IBOutlet var Image23: UIImageView! 
@IBOutlet var Image24: UIImageView! 
@IBOutlet var Image25: UIImageView! 
@IBOutlet var Image26: UIImageView! 
@IBOutlet var Image27: UIImageView! 
@IBOutlet var Image28: UIImageView! 
@IBOutlet var Image29: UIImageView! 
@IBOutlet var Image30: UIImageView! 
@IBOutlet var Image31: UIImageView! 
@IBOutlet var Image32: UIImageView! 
@IBOutlet var Image33: UIImageView! 
@IBOutlet var Image34: UIImageView! 
@IBOutlet var Image35: UIImageView! 
@IBOutlet var Image36: UIImageView! 


override func viewDidLoad() { 

    let images = (1...6).map { UIImage(named: "Owl\($0)") } 
    let imageViewsArray = [Image1, Image2, Image3, Image4, Image5, Image6, Image7, Image8, Image9, Image10, Image11, Image12, Image13, Image14, Image15, Image16, Image17, Image18, Image19, Image20, Image21, Image22, Image23, Image24, Image25, Image26, Image27, Image28, Image29, Image30, Image31, Image32, Image33, Image34, Image35, Image36] 
    for view in imageViewsArray { 
     let randomIndex = Int(arc4random_uniform(UInt32(images.count))) 
      view.image = images[randomIndex] 
    } 

} 

私はIBOutletは一緒にすべての36枚の画像のために作るもらえましたか?またはこれのような何か? :-)

ViewDidLoad()hereのコードについての情報。

+0

私は真剣にあなたがUICollectionViewまたはUITableViewをコードをより少なくするために使用しなければならないと疑っています。派生データを削除し(ウィンドウ - >プロジェクト)、xCodeを復元します。後でうまくいくはずです。 – FruitAddict

+0

@FruitAddictありがとう!しかし、私はUICollectionViewにコードをどのように変更できるのか分かりません:-) –

+0

画面に36枚の画像を表示している場合は、何らかの形のグリッドまたはリスト形式で配置する必要があります。 36個のアウトレットをドラッグする代わりに、36個のセルにそれらのイメージを取り込むことができます。コードは、より洗練され、拡張可能です。 – FruitAddict

答えて

0

@FruitAddictによれば、もちろん表示する内容に応じてUICollectionViewが便利かもしれません。それはあなたのニーズに適合しない場合でも、あなたはまだ代わりにアウトレットのアウトレット接続を使用することができます。

enter image description here

したがって、あなたがUILabelの明示的な開封された配列であるlabelCollectionから直接すべてのラベルにアクセスすることができます。

また、gifでは、既存のコンセントにドレーンすることで、2番目のラベルがコレクションコンセントに追加されます。コンセントは(通常のオブジェクトのように)置換されず、代わりに新しいラベルが配列に追加されます。

EDIT:

@nhgrifが指摘したように、出口コレクション内のオブジェクトの順序に依存しない:

それは注意することが重要だと何度順内でしばらくアウトレットのコレクションは、あなたがドラッグした順序と一致している可能性があります。アップルはこれについて保証しておらず、コレクション内の順序は信頼されるべきではありません。

この配列を1組とみなしてください。

+0

コンセントのコレクション内の順序は、あなたがドラッグした順序と同時に一致することがありますが、Appleはこれについて保証しておらず、コレクション内の順序に依存してはならないことに注意してください。 – nhgrif

+0

いい加減、ちょうど追加しました。 –

関連する問題