Я создал табличное представление, пожалуйста, найдите прикрепленный снимок экрана TableView
проблема в том, что если я выберу первый элемент в разделе 1, если я прокручу вниз, другой будет выбран автоматически . Вот мой код для cellForItemAt:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
switch (indexPath.section) {
case 0:
var cell1 = tableView.dequeueReusableCell(withIdentifier: "selectStory", for: indexPath) as! StorySelectionTableViewCell
cell1.label.text = self.myStories[indexPath.row].name!
cell1.select.tag = indexPath.row
cell1.select.addTarget(self, action: #selector(handleSwitch), for: .valueChanged)
return cell1
case 1:
var cell = tableView.dequeueReusableCell(withIdentifier: "contactCell", for: indexPath) as! ContactsTableViewCell
cell.selectSwitch.tag = indexPath.row
cell.thumb.layer.masksToBounds = false
cell.thumb.layer.cornerRadius = cell.thumb.frame.height / 2
cell.thumb.clipsToBounds = true
cell.name.text = myGroups[indexPath.row].name
cell.selectSwitch.addTarget(self, action: #selector(handleButtonPress), for: .valueChanged)
if myGroups[indexPath.row].imageUrl != "" && myGroups[indexPath.row].imageUrl != nil {
let url = URL(string: myGroups[indexPath.row].imageUrl!)
cell.thumb.kf.setImage(with: url)
}
return cell
case 2:
var cell = tableView.dequeueReusableCell(withIdentifier: "contactCell", for: indexPath) as! ContactsTableViewCell
cell.selectSwitch.tag = indexPath.row
cell.thumb.layer.masksToBounds = false
cell.thumb.layer.cornerRadius = cell.thumb.frame.height / 2
cell.thumb.clipsToBounds = true
cell.name.text = myUsers[indexPath.row].name
cell.selectSwitch.addTarget(self, action: #selector(handleButtonPress), for: .valueChanged)
if myUsers[indexPath.row].imageUrl != "" && myUsers[indexPath.row].imageUrl != nil {
let url = URL(string: myUsers[indexPath.row].imageUrl!)
cell.thumb.kf.setImage(with: url)
}
return cell
//Access itemsB[indexPath.row]
default:
var cell = tableView.dequeueReusableCell(withIdentifier: "contactCell", for: indexPath) as! ContactsTableViewCell
return cell
//Access itemsC[indexPath.row]
}
}
, а вот мой обработчик Switch:
@objc func handleButtonPress(_ sender: UIButton) {
let buttonPosition: CGPoint = sender.convert(CGPoint.zero, to: self.collectionView)
let indexPath = self.collectionView.indexPathForRow(at: buttonPosition)
switch indexPath!.section {
case 1:
if self.selectedGroups.contains(self.myGroups[indexPath!.row].id!) {
//remove it
self.selectedGroups = self.selectedGroups.filter {
$0 != self.myGroups[indexPath!.row].id!
}
} else {
self.selectedGroups.append(self.myGroups[indexPath!.row].id!)
}
break
case 2:
if self.selectedUsers.contains(self.myUsers[indexPath!.row].id!) {
self.selectedUsers = self.selectedUsers.filter {
$0 != self.myUsers[indexPath!.row].id!
}
} else {
self.selectedUsers.append(self.myUsers[indexPath!.row].id!)
}
break
default:
break
}
}
Это только между разделами 1 и 2. Раздел 0 работает нормально