2017-01-10 4 views
1

У меня есть"Генерировать" метка из данных стремительной

["06:58"] 
["07:13", "07:38", "07:53"] 
["08:13", "08:38", "08:53"] 
["09:13", "09:33", "09:53"] 

и я хочу, чтобы показать его в tableView как показано на рисунке:

enter image description here

каждый элемент - это UILabel, я создал class TimeViewCell: UITableViewCell где имеют свойство var labels = [UILabel](), но я не знаю, как нажимать данные из моего массива в моей функции:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

     let cell = tableView.dequeueReusableCell(withIdentifier: "cellTime", for: indexPath) as! TimeViewCell 
     let showHour = self.infoWripper.sorted(by: { $0.hour < $1.hour }) 

     cell.labelTime.text = showHour[indexPath.row].showHour() 

     for data in showHour { 

      print(data.showFullTime()) //here you see my example of data in console 
     } 

     return cell 
    } 
+3

Я предлагаю вам создать collectionView внутри uitableviewcell, если у вас нет определенного максимального количества возможных времен. – Miknash

+0

У вас есть максимум предметов для ячеек? – Larme

+0

@ Larme no, я не знаю, какие максимальные элементы могут быть (может быть 15, но для каждой ячейки, счет может меняться) –

ответ

1

Я бы добавил UIStackView к вашему UITableViewCell. Вы можете добавить ярлыки с текстом в UIStackView.

Я завернул ваши данные в массив.

let tableViewData = [["06:58"], 
    ["07:13", "07:38", "07:53"], 
    ["08:13", "08:38", "08:53"], 
    ["09:13", "09:33", "09:53"]] 

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 

    let cell = tableView.dequeueReusableCell(withIdentifier: "cellTime", for: indexPath) as! TimeViewCell 

    cell.configure(data: tableViewData[indexPath.row]) 

    return cell 
} 

Затем в течение вашего TimeViewCell, вы должны добавить UIStackView IBOulet (или добавить его программно) и метод настройки.

class TimeViewCell: UITableViewCell { 

    @IBOutlet var labelStackView: UIStackView! 

    func configure(data: Array<String>) { 
     for time in data { 
      let timeLabel = UILabel() 
      timeLabel.text = time 
      labelStackView.addArrangedSubview(label) 
     } 
    } 
} 
+0

спасибо! он отлично работает! –

+0

и один вопрос - когда я просматриваю свой табличный обзор - мои данные в каждой ячейке добавляют (не обновлять) - может быть любой вариант, чтобы скрыть это? –

+0

Добро пожаловать. – Yannick