2016-11-14 4 views
0

イメージ数があり、image0、image1、image2 ...、image(x)という名前が付けられています。あなたは、次のコードを介してこれを行うことができます変数名にアクセスして文字列を変更する方法

@IBOutlet weak var image0: UIImageView! 
@IBOutlet weak var image1: UIImageView! 
@IBOutlet weak var image2: UIImageView! 
@IBOutlet weak var image3: UIImageView! 
@IBOutlet weak var image4: UIImageView! 
@IBOutlet weak var image5: UIImageView! 
... 
@IBOutlet weak var image15: UIImageView! 
    var counter: Int = 0 
    var items :[[UIImageView]] = [] 
    for i in 0..<4{ 
     for j in 0..<4{ 
      items[i][j]=image(counter) //this line should be something that image0,1..x assign to the array 
      counter += 1 
     } 
    } 
} 
+2

変数名はコンパイル時に評価されます。実行時にそれらを構成することはできません。 – vadian

+0

これを見てください:http://stackoverflow.com/a/13392032/3626714 – Ashik

+0

コードから画像ビューを作成する方がよいでしょう。インタフェースビルダーからではありません。 –

答えて

0

私の質問は、私はのような配列にそれらのすべてを置きたいので、私は自分の名前をアクセスする方法です。スウィフト3

var items : [[UIImageView]] = [] 
let myMirror = Mirror(reflecting: self) 
for i in 0..<4 { 
    items.insert([UIImageView](), at: i) 
    for j in 0..<4 { 
     let propertyName = "image\(i*4 + j)" 
     items[i].insert(myMirror.descendant(propertyName) as! UIImageView, at: j) 
    } 
} 

はしかし、これは私はあなたがやろうとしているものを見るUICollectionView

0

を使用してに見て、開発者によって使用されるコードではありません。悲しいことに変数名はコンパイル時に評価されるため、これは不可能です。あなたができる最良のことは、アレイを手動で作成することです。

[[image0, image1, image2], [image3, image2, image3], ...] 
関連する問題