Bonjour, j'essaie de faire une séquence par programmation sans le Storyboard. Actuellement, j'ai ceci comme code:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "popOutNoteExpanded" {
let vc = segue.destination as! ExpandedCellViewController
let cell = sender as! AnnotatedPhotoCell
sourceCell = cell
vc.picture = cell.imageView.image
print("button pressed")
}
}
func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) {
performSegue(withIdentifier: "popOutNoteExpanded", sender: indexPath)
}
Lorsque je clique sur la cellule de la vue de collection, elle dit ceci:
n'a pas de lien avec l'identifiant 'popOutNoteExpanded'.
Vous ne savez pas comment effectuer ma transition animée personnalisée.
Les séquences sont des composants du storyboard. Si vous n'avez pas de story-board, vous ne pouvez pas effectuer de séquence. Mais vous pouvez utiliser le contrôleur de vue présent comme ceci:
let vc = ViewController() //your view controller
self.present(vc, animated: true, completion: nil)
Pour déclencher une séquence par programme, vous devez suivre les étapes suivantes:
1. Configurez-le dans Storyboard par en faisant glisser votre séquence désirée entre deux contrôleurs de vue et définissez son identificateur (par exemple, dans votre cas, il s'agit de "popOutNoteExpanded") dans la section Inspecteur d'attributs.
2. Appelez-le par programme
performSegue(withIdentifier: "popOutNoteExpanded", sender: cell)
Veuillez vérifier si vous avez défini son identifiant correctement ou non.
De plus, dans votre code ci-dessus, vous mettez n expéditeur incorrect. Dans votre méthode prepare () , vous utilisez l'expéditeur en tant que UITableViewCell , mais vous appelez performSegue () avec l'expéditeur en tant que IndexPath .
Vous avez besoin d’une cellule en appelant:
let cell = tableView.cellForRow(at: indexPath)
Et puis vous pouvez effectuer une séquence:
performSegue(withIdentifier: "popOutNoteExpanded", sender: cell)
En plus de la réponse correcte, sachez que si vous vous trouvez dans une pile de navigation (par exemple, vous êtes dans une page de paramètres et souhaitez passer à un compte Mon compte), vous devez utiliser:
let vc = MyAccountVC()
self.navigationController?.pushViewController(vc, animated: true)
Si le VC dans lequel vous naviguez apparaît avec un arrière-plan transparent pendant la transition, définissez simplement le backgoundColor
sur .white
.