У меня есть пользовательский UITableView и пользовательский UITableViewCell с UISegmentedControl. Эта ячейка находится в первой строке таблицы.Swift 3: Сегментированный контроль в TableView. Выбранный индекс теряется при перезагрузке таблицы
Проблема заключается в том, что я использую событие valueChanged для загрузки данных из json, и когда я перезагружаю tableview, индекс select автоматически возвращается к первому сегменту. Как я могу это исправить?
Это часть моего кода:
@IBAction func segmentChanged(_ sender: UISegmentedControl) {
switch sender.selectedSegmentIndex{
case 0:
loadIdeas(idRole:[0,1], id_user: 1, estado: "todas")
case 1:
loadIdeas(idRole:[0,1], id_user: 1, estado: "aceptada")
case 2:
loadIdeas(idRole:[0,1], id_user: 1, estado: "pendiente")
case 3:
loadIdeas(idRole:[0,1], id_user: 1, estado: "rechazada")
default:
loadIdeas(idRole:[0,1], id_user: 1, estado: "todas")
}
}
И я обновить данные в функции «loadIdeas», как это:
DispatchQueue.main.async{
self.table.tableView.reloadData() // Refrescamos el contenido de la tabla
}
данных правильно меняется каждый раз, когда я выбрать другой сегмент, но сегментированное управление всегда сохраняет первый сегмент, выбранный до перезагрузки данных.
Помогите мне, пожалуйста. Я тратить свое время с этим в течение нескольких часов, и я не нашел подобную ситуацию в Интернете, которые могут помочь мне
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if(cells[indexPath.row].cell == 1){
let cell = Bundle.main.loadNibNamed("CustomHeaderCell", owner: self, options: nil)?.first as! CustomHeaderCell
cell.menuLabel.text = cells[indexPath.row].titulo
return cell
}
else if(cells[indexPath.row].cell == 2){
let cell = Bundle.main.loadNibNamed("SegmentedControlCell", owner: self, options: nil)?.first as! SegmentedControlCell
cell.table = self
return cell
}
else{
let cell = Bundle.main.loadNibNamed("MyTableViewCell", owner: self, options: nil)?.first as! MyTableViewCell
cell.labelTitulo.text = cells[indexPath.row].titulo
cell.labelDescripcion.text = cells[indexPath.row].descripcion
cell.labelEstado.text = cells[indexPath.row].estado
cell.labelFecha.text = cells[indexPath.row].fecha
cell.labelDepartamento.text = cells[indexPath.row].departamento
//cell.imageView?.image = cells[indexPath.row].imagen
return cell
}
}
Можете ли вы поделиться своим методом tableView (_: cellForRowAt :)? –
Я новичок в iOS swift, поэтому, возможно, мой код - это катастрофа: –
Извините, я обновил первый комментарий с этой частью моего кода –