Swift ile Unwind Segue Kullanımı

Unwind segue, normal segue yapılarının aksine eski sayfalara geri dönmek için kullanılır.

Biz normalde eski sayfaları açmak için navigationController “Geri” tuşunu veya

  • popViewController,
  • popToRootViewController,
  • popToViewController

fonksiyonlarını; presentModally şeklinde açılmış sayfadan geriye dönmek için ise dismiss fonksiyonunu kullanabiliyoruz.

Peki öyleyse Unwind segue ye neden ihtiyacımız var?

Bu ihtiyaç aslında biraz spesifik bir durumdan ortaya çıkıyor. İsterseniz örnek üzerinden inceleyelim.

Örneğin 1. ViewController dan 2. ViewController a pushSegue yaptınız. 2. ViewController dan 1. ViewController a geri dönerken geri tuşunu kullanabilir veya kod ile popViewController, popToRootViewController, popToViewController fonksiyonlarından birini kullanabilirsiniz.

Şimdi ise 2. ViewController dan presentModally segue ile 3. ViewController ı present ettiniz. 3. ViewController dan 2. ViewController a geri dönmek için dismiss fonksiyonunu kullanabilirsiniz fakat 3. ViewController dan 1. ViewController a nasıl döneceksiniz?

Akla gelen yöntemlerden bir tanesi 3. ViewController ı kapatırken delegate ile 2. ViewController a haber vermesi ve 2. ViewController ın herhangi bir yöntem kullanarak 1. ViewController a geri dönmesi.

 

Delege ve Protokol kavramlarını daha iyi anlamak için aşağıdaki yazıya göz atın:

 

Fakat bu iyi bir yol değil, daha kısa yolu var: Unwind Segue(Exit Segue) kullanmak. Gelin Unwind segue kullanarak bu sorunu çözelim.

 

Çözüm

Öncelikle hangi ViewController sınıfına geri dönmek istiyorsak şöyle bir kod parçası eklememiz gerek:

Bu fonksiyonun yazıldığı sınıf bizim referans sınıfımız oluyor. Dolayısıyla sınıfın ismini vermek mantıklı olabilir.

Hatırlarsanız Interface Builder kullanırken ViewController sayfasının üstünde bir Exit ifadesi yer alıyor.

İşte burası mevcut olarak açılmış olan sayfanın tabiri caizse “kaçış” noktasıdır. Biz de 3. ViewController dan 1. ViewController a dönmek için bu “kaçış” noktasını kullanacağız.

 

3. ViewController dan 1. ViewController a geri dönmek için tüm yapmamız gereken buydu. Siz de bu tip spesifik ihtiyaçlarda unwind segue yapısını kullanmayı tercih edebilirsiniz.