Önceki Sahneye Dönmek

Swift4 ile önceki sahneye dönmek nasıl yapılır, öğreniyoruz😎

Bildiğiniz gibi bir ekrandan diğerine Present Modally yapısı ile geçiş yaptığımızda önceki sayfa gözden kaybolur.

 

Present Modal ile oluşturduğunuz sahneye geriye dönük veri paylaşımı nasıl öğrenmek istiyorsanız Delege ve Protokol Kullanımı dersine bakabilirsiniz.

 

Geçiş yaptığınız ekrandan tekrar birinciye segue oluşturduğunuzda ise aslında sorunu çözmüş olmuyorsunuz çünkü bu işlemi yaptığınızda ilk ekranınızın bir kopyasını yaratmış oluyorsunuz ve ilk ekranınız garbage collection a düşüyor -ki buda istemediğimiz bir şey.

Bizim istediğimiz şey ise orjinal ekrana geri dönüş yapmak. Peki bunu nasıl yapacağız?

Önceki sahneye dönmek için kullanacağımız yapının unwind segue dir. Bu yapıyı örnek uygulamam üzerinden anlatacağım.

Başlayalım… 🔨

 

Önceki Sahneye Dönmek: Örnek Uygulama

Öncelikle şu adımları takip edelim

  • 1. ekrandan 2. ye geçiş yapmak için bir buton koyun
  • Bu butondan 2. ekrana present modally türünde bir segue bağlantısı yapın
  • 2. ViewController seçiliyken Editor -> Embed In -> Navigation Controlller uygulayın
  • Her scene için ViewController tanımlamayı unutmayın
  • Gerekli IBOutlet ve IBAction bağlantılarını yapın

 

Şu anda bunu yaptık:

0*59tP3kBcSKw-4l1N.png

Önceki Sahneye Dönmek: Yapı

Şimdi yapmak istediğimiz 2. ekrandan 1. ekrana geri dönüş sağlamak.

Bunun için 2. ekranımızda bir buton oluşturacağız. Bu buton ekranın herhangi bir yerinde olabilir fakat genelde günlük hayatta bunu üst çubuğun sol köşesinde kullandığımız için buraya yerleştirmek daha güzel olacaktır.

Şimdi object library sinden navigation item ı bulalım ve 2. ekranımızda herhangi bir yere sürükleyelim.

0*jRiOSn6e2wss_GY4.png

Önceki Sahneye Dönmek: Navigation Item

 

Yukardaki çubuğun sol tarafına Bar Button Item sürükleyin, ismine “Geri” yazalım. NavigationItem tipindeki bu butonu önceki sahneye dönmek için kullanacağız.

İsteğe bağlı “Title” kısmının ismini de değiştirebilirsiniz.

0*iegXOwWJO4yoBbt3.png

Önceki Sahneye Dönmek: Bar Button Item

 

Şimdi 1. ekranımızın ViewController classına girelim ve aşağıdaki kodu yazalım.

 

2. ekranımızdan bu fonksiyonu trigger etmemiz gerekiyor. Ancak o zaman orijinal ekrana geri dönüş sağlayabileceğiz.

Bunun için Storyboard’a geri dönelim ve oluşturduğumuz geri butonundan exit aksiyonuna Control tuşuna basılı tutarak sürükleyelim ve unwindToLogin fonksiyonunu seçelim.

0*sV35dC-JHJw_jCwT.gif

 

Böylece geri butonunu unwindToLogin fonksiyonuna bağlamış olduk ve önceki sahneye dönmek nasıl yapılır mevzusunu halletmiş olduk.

 

Son Notlar

Bütün işlem aslında bukadar fakat gerçekten ilk oluşturduğumuz ekrana döndüğümüzü nasıl anlayacağız? Bunu biraz konuşalım.

 

Hatırlarsanız uygulamanın yaşam döngüsünde en çok kullandığımız viewDidLoad metodu o ekran açıldığında yalnızca bir sefere mahsus çalışır. Yani her viewDidLoad metodu çalıştığı zaman yeni bir ekran yaratılmış olur.

Eğer 2. ekrandan 1. ekrana segue oluşturursanız 1. ekrana her döndüğümüzde bunun bir kopyasını oluşturmuş oluruz ve her ekran ilk defa yaratıldığı için her seferinde viewDidLoad metodu çalışmış olur.

Fakat unwindSegue ile 1. ekranın kopyasına değil kendisine eriştiğimiz için viewDidLoad metodu yalnızca bir kere çalışmış olacak.

Bunu test etmek için 1. ekranın viewDidLoad metoduna bir print ifadesi yazdırın ve örnek uygulamamızdaki geri butonu ile geri gelerek bu ifadenin tekrar çalışıp çalışmadığını görün.

 

Tabiki tekrar çalışmayacak çünkü orjinal ekrana döndük 🙂

 

Kaynak koduna iOS Notları – Github  hesabından erişebilirsiniz.

 

Geri dönmek için bildiğiniz başka bir yol var mı? Tartışalım.

 

İyi kodlamalar 💻

Kimler Neler Demiş?

avatar
  Subscribe  
Bildir
Atalay
Ziyaretçi
Atalay

Merhaba, yazılarınız için teşekkürler çok yararlı konulara değinmişsiniz devamını bekliyoruz. Sormak istediğim şey unwind segue yerine bu konuda dismiss fonksiyonunu kullanamaz mıyız aynı şeyler değil mi?

trackback

[…] ViewController’a geri dönüş ile ilgili yazdığım Önceki ViewController’a Dönmek yazıma göz […]