почему я получаю два последовательных viewcontrollers при выполнении segue, чтобы показать детали - PullRequest
0 голосов
/ 18 октября 2018

когда я нажимаю на uicollectionViewCell, я прихожу к пустому ViewController, а через долю секунды создается новый ViewController, который правильно отображает данные.Возвращаясь, я должен дважды нажать кнопку «Назад», чтобы вернуться к исходному viewController.В MainStoryboard у меня реализован переход «показать детали».Что здесь происходит?Что я должен проверить ??Вот код:

func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {

    let cell = collectionView.cellForItem(at: indexPath) as! CollectionViewCell

    key = cell.keyImage.image

    performSegue(withIdentifier: "showKeyDetails", sender:self)

}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showKeyDetails"{
        if let destVC = segue.destination as? KeyDetailViewController{
            if key != nil{
                destVC.key = key
            }
        }
    }
}

1 Ответ

0 голосов
/ 18 октября 2018

Вы отправили свой переход из ячейки collectionView.Поэтому, когда вы выбираете ячейку, запускается переход, а затем performSegue создает второй переход.

Чтобы это исправить, вы можете:

  1. УдалитьperformSegue вызовите, удалите функцию didSelectItem и обновите функцию prepare(for:sender:), чтобы найти ключ:

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "showKeyDetails"{
            if let destVC = segue.destination as? KeyDetailViewController,
               let cell = sender as? CollectionViewCell,
               let key = cell.keyImage.image
            {
                destVC.key = key
            }
        }
    }
    

    ИЛИ:

    2) Подключитепереход от значка viewController вверху VC вместо ячейки.

...