Bu soruna başka bir yaklaşım önermek istiyorum. Bir görünüm denetleyicisini açmak için gezinti denetleyicisini kullanmak yerine, çözme segueleri kullanın. Bu çözümün birkaç, ama gerçekten önemli avantajları var:
- Başlangıç denetleyicisi, hedef hakkında hiçbir şey bilmeden başka bir hedef denetleyiciye (yalnızca öncekine değil) geri dönebilir.
- Push ve pop sekmeleri film şeridinde tanımlanır, bu nedenle görünüm denetleyicilerinizde gezinme kodu yoktur.
Daha fazla ayrıntıyı Adım Adım Çözme bölümünde bulabilirsiniz . Nasıl yapılır, verilerin nasıl geri gönderileceği de dahil olmak üzere önceki bağlantıda daha iyi açıklanır, ancak burada kısa bir açıklama yapacağım.
1) Varış yeri (başlangıç noktası değil) görünüm denetleyicisine gidin ve bir gevşeme sekmesi ekleyin:
@IBAction func unwindToContact(_ unwindSegue: UIStoryboardSegue) {
//let sourceViewController = unwindSegue.source
// Use data from the view controller which initiated the unwind segue
}
2) CTRL'yi görünüm denetleyicisinin kendisinden başlangıç görünümü denetleyicisindeki çıkış simgesine sürükleyin :
3) Birkaç dakika önce oluşturduğunuz çözme işlevini seçin:
4) Çözme segueini seçin ve bir isim verin:
5) Başlangıç görünümü denetleyicisinin herhangi bir yerine gidin ve çözme segueini arayın:
performSegue(withIdentifier: "unwindToContact", sender: self)
Navigasyonunuz karmaşıklaşmaya başladığında bu yaklaşımın getirilerini çok fazla buldum.
Umarım bu birine yardımcı olur.