2016-11-14 2 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

Вы можете сделать это с помощью следующего кода.

Swift 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], ...] 

 Смежные вопросы

  • Нет связанных вопросов^_^