2016-12-16 7 views
0

У меня есть коллекция на выходе UIButtons:Вложенные для петель в быстром 3 для uibuttons титул

@IBOutlet var categoriesButtonLabels: [UIButton]! 

каждая кнопка имеет другой тег (устанавливается в раскадровке).

Я хочу, чтобы их заголовки заполнялись массивом строк (категории, которые я извлекаю где-то еще в моем коде из базы данных FireBase).

Я пытался что-то вроде этого:

override func viewDidLoad() { 
    super.viewDidLoad() 
// Setting Category buttons labels 
    for button in categoriesButtonLabels { 
     for i in categories { 
      button.setTitle("\(i)", for: .normal) 
     } 
    } 
} 

, но это становится только последнее значение категории массива и настройки названия одинаковы для всех кнопок ... Что я делаю неправильно?

Для полноты картины: Это моя категория массив:

for (index, value) in categories.enumerated() { 
print("\(index) = \(value)") 
} 

и выход коллекции:

for (index, value) in categoriesButtonLabels.enumerated() { 
print("\(index) = \(value)") 
} 

Выход:

categories string array is:0 = sports categories string array is:1 = science categories string array is:2 = movies categories string array is:3 = music categories string array is:4 = history

Outlet UIButtons Collection is:0 = > Outlet UIButtons Collection is:1 = > Outlet UIButtons Collection is:2 = > Outlet UIButtons Collection is:3 = > Outlet UIButtons Collection is:4 = >

ответ

1

Снимите внутренний цикл:

for (i, button) in categoriesButtonLabels.enumerated() { 
    button.setTitle("\(categories[i])", for: .normal) 
} 
+0

Спасибо, но мне что-то не хватает ... если я удалю внутренний цикл, где вы получите [i] для категорий? – Alex

+0

На самом деле моя мисс. См. Обновленный ответ –

+0

фатальная ошибка: индекс за пределами диапазона (lldb). , который является супер странным, поскольку массив категорий задан правильно – Alex