Reload table view и segmented control

swift
tableview

#1

Добрый день, всем

У меня есть следующее:

  1. При переходе на экран приходит массив с данными с сети;
  2. Массив содержит в себе экземпляры структур (модели). У модели есть одно свойство;
  3. В другой массив я собираю только уникальные значения этого свойства;
  4. Далее мне необходимо добавить сегменты в segmented control каждого элемента массива;
  5. После выбора определённого сегмента мне нужно релоадить таблицу.

Вот так делаю 3-ий и 4-ый пункты:

private func setupSegmentBar() {
    for item in uniqueSpecialty {
        segmentBar.insertSegment(withTitle: item, at: 0, animated: true)
    }
}

private func allDoctorsSpecialty() {
    for item in doctors {
        guard let specialty = item.specialty else { return }
        if !uniqueSpecialty.contains(specialty) {
            uniqueSpecialty.append(specialty)
        }
    }
    setupSegmentBar()
}

Не могу понять, как можно сделать 5-ый пункт.


#2

Вы два раза втсавили один метод.

Для 5

segmentedControl.addTarget(self, action: #selector(segmentedControlValueChanged), for: .touchUpInside)

func segmentedControlValueChanged(segment: UISegmentedControl) {
    if segment.selectedSegmentIndex == 0 {
    }
    ...
}

#3

Извиняюсь, исправил.

Проблема в том, этих сегментов может быть разное количество. В средннем планируется от 2-х до 6-ти. И соответственно нужно вместо “segment.selectedSegmentIndex == 0” какая-то другая конструкция. Я пробовал циклом и свитч кесом перебирать, но результата нет.


#4

У вас получается индекс в сегменте соответствует значению в массиве uniqueSpecialty.

func segmentedControlValueChanged(segment: UISegmentedControl) {
    let speciality = uniqueSpecialty[segment.selectedSegmentIndex] // узнали на какую специальность нажали
    // дальше делаете что вам нужно
    // передаете ее или ставите куда-то и обновляете таблицу
    tableView.reloadData()
}

#5

Спасибо большое! Попробую скоро


#6

Сделал как у вас, но теперь данные в таблице не отображаются вовсе - https://i.imgur.com/ItYzgGQ.png То есть сам массив меняется и он не пустой (откуда таблица тянет данные), а вот таблица всегда остаётся пустой почему-то - https://i.imgur.com/qKA5Td1.pngс


#7

Странно, но мой код вобще никак не влияет на работу вашей таблицы. Смотрите свой старый код, что вы убрали и почему данные из таблицы пропали.


#8

Переписал всё заново и заработало. Может быть @IBOutlet как-то блокировал работу таблицы///