J'ai lu ce fil (et d'autres similaires) de bas en haut, mais il ne correspond pas du tout à mes besoins.
J'ai un UIViewController
à l'intérieur de UIPageViewController
dans un UINavigationController
. Naviguer vers un 2e ViewController . Je navigue vers un troisième ViewController et je veux revenir au 2e ViewController pour lui transmettre des données.
Mon code actuel :
protocol PassClubDelegate {
func passClub(passedClub: Club)
}
class My3rdVC: UIViewController {
var clubs: [Club] = []
var passClubDelegate: PassClubDelegate?
....
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let club = clubs[indexPath.row]
self.passClubDelegate?.passClub(club)
navigationController?.popViewControllerAnimated(true)
}
Mon 2ème VC :
class My2ndVC: UIViewController, PassClubDelegate {
var club = Club()
func passClub(passedClub: Club) {
SpeedLog.print("passClub called \(passedClub)")
club = passedClub
}
passClub
n'est pas appelé. Je suis sûr que c'est parce que je n'ai pas défini le délégué au My2ndVC, mais comment faire ? Toutes les solutions que j'ai trouvées veulent que j'utilise a) la segue ou b) l'instanciation d'un nouveau My2ndVC, ce qui n'a aucun sens puisqu'il est toujours en mémoire et que je veux faire un pop back pour remonter dans la hiérarchie. Qu'est-ce qui me manque ? Quelles sont mes possibilités ? Toute aide est la bienvenue.
PS : Je n'utilise pas de séquences. My3rdVC est appelé par :
let vc = stb.instantiateViewControllerWithIdentifier("My3rdVC") as! My3rdVC
self.navigationController?.pushViewController(vc, animated: true)