Вопрос по collectionView


#1

Как передать информацию по IndexPath на другой контроллер?
Пытался сделать так, но CollectionView не знает indexPathForSelectedItem:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

if segue.identifier == "chosenPerson" {

    let chosenPerson = segue.destination as! chosenPersonViewController

    if let indexPath = collectionView.indexPathForSelectedItem {

    chosenPerson!.userID = self.usersArray[indexPath.row].userId 

    }

}
}


#2

У CollectionView нет функции indexPathForSelectedItem, есть функция indexPathForSelectedItems и она возвращает множество выбранных ячеек. Если выбрана только одна ячейка, то берем первую.

if segue.identifier == "chosenPerson" {
       let chosenPerson = segue.destination as! chosenPersonViewController

   if let indexPaths = collectionView.indexPathForSelectedItems {
       let indexPath = indexPaths.first
       chosenPerson!.userID = self.usersArray[indexPath.row].userId 
   }
}

#3

А почему просто при нажатии на ячейку и вызывая переход по segue, не передать indexPath выбранной ячейки как sender???


#4

Если сегвей прикреплен к ячейке в сториборде, то довольно сложно передавать информацию в сендере.


#5

На это сообщение поступили жалобы от участников сообщества, поэтому оно временно скрыто.


#6

а зачем делать переход именно таким образом?
А в чем там сложность?


#7

По идее нет особой разницы каким образом делать переход, можно тем какой тебе удобнее.