Очистить код? (Xcode зависает при индексации)

Я считаю, что мне нужно немного почистить свой код, так как Xcode впервые начал зависать при «индексации», и я не могу запустить свой проект. Я думаю, что это легко сделать, но я не знаю, какой способ лучше. Получил 36 UIImageViews...

@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() здесь.


person Rappe Stegarn    schedule 16.06.2016    source источник
comment
Я серьезно подозреваю, что вы ДОЛЖНЫ использовать UICollectionView или UITableView здесь, чтобы код был меньше ..this. Удалите производные данные (окна-›проекты) и перезапустите xCode. После этого должно работать нормально.   -  person FruitAddict    schedule 16.06.2016
comment
@FruitAddict Спасибо! Но я не знаю, как я могу изменить код на UICollectionView :-)   -  person Rappe Stegarn    schedule 16.06.2016
comment
Ну, если вы показываете 36 изображений на экране, они должны быть организованы в виде сетки или списка. Вместо того, чтобы перетаскивать 36 точек, вы можете заполнить 36 ячеек этими изображениями, тогда код станет более чистым и расширяемым.   -  person FruitAddict    schedule 16.06.2016
comment
@FruitAddict Как вы можете видеть в моем коде, я плохой. Поэтому мне нужно привести конкретный пример, чтобы понять, извините, приятель.   -  person Rappe Stegarn    schedule 16.06.2016
comment
посмотрите UICollectionView, это легко.   -  person FruitAddict    schedule 16.06.2016


Ответы (1)


Как сказал @FruitAddict, UICollectionView может быть полезен, конечно, в зависимости от того, что вы хотите отобразить. Но если это не соответствует вашим потребностям, вы все равно можете использовать выходное соединение вместо выхода:

введите здесь описание изображения

Таким образом, вы можете получить доступ ко всем меткам непосредственно из коллекции labelCollection, которая представляет собой явный развернутый массив UILabel.

Так же в гифке добавлена ​​вторая метка на розетку коллекции перетаскиванием ее на уже существующую розетку. Выход не заменяется (как в обычном объекте), а вместо этого в массив добавляется новая метка.

ИЗМЕНИТЬ:

Как указал @nhgrif, не полагайтесь на порядок объектов в коллекции выходов:

Важно отметить, что, хотя во многих случаях порядок в коллекции розеток может случайно совпадать с порядком, в который вы их перетащили, Apple не дает никаких гарантий по этому поводу, и на порядок в коллекции нельзя полагаться.

Вы должны рассматривать этот массив как набор.

person Michaël Azevedo    schedule 16.06.2016
comment
Важно отметить, что, хотя во многих случаях порядок в коллекции розеток может случайно совпадать с порядком, в который вы их перетащили, Apple не дает никаких гарантий по этому поводу, и на порядок в коллекции нельзя полагаться. - person nhgrif; 16.06.2016
comment
Хорошее дополнение, только что добавил. - person Michaël Azevedo; 16.06.2016