Salı Eylül 24th, 2019

Swift Segue

ile Ebubekir Sezer

Merhabalar, Swift ile iOS uygulama geliştirir iken uygulama’da sayfalar arası geçiş yapmak için segue kullanıyoruz. Segue uygulama’da sayfalar arası geçişte yani View arası geçişi sağlamamıza yardımcı oluyor.

Segue kullanımını göstermek için Xcode’da blank bir swift projesi oluşturuyorum. Main.storyboard’da bir tane daha view controller ekliyorum. Eklediğim yeni View Controller için SecondViewController adında kontrol oluşturuyorum ve bu kontrolü View Controller’a bağlıyorum.

Şimdi sayfaların arka plan rengini değiştiriyorum ve her sayfaya label, text field ve buton ekliyorum. İlk View Controller içerisindeki butona kontrol tuşuna basılı tutarak diğer view controller üzerine sürüklüyorum ve bize nasıl göndermek istediğimiz hakkında seçenekler sunuyor. Ben Show seçiyorum. Uygulamamızı çalıştırdığımızda ve butona tıkladığımızda sayfa arası geçiş yapılıyor. Burada segue’e identifier vermemiz önemli.

Geçişi yapar iken popover şeklinde sayfayı gösterebilir bunu çözmek için kod yazmalıyız. İlk olarak ben farklı bir yöntem ile navigation yapacağım ve yaptıktan sonrada sayfayı tam ekran göstereceğim. Şimdi önceki yaptığımız segue veya navigation a tıklayarak silelim Main.storyboard’da. View Controller’ın üst kısımda bulunan yuvarlak şekilde olan View Controller’a kontrol tuşu ile tıklayarak diğer ekrana sürükleyelim ve bu Segue’nin identifier’ını “goToSecondView” veriyorum. Şimdi View Controller’ıma gidiyorum ve override prepare diyerek fonksiyonumu getiriyorum burada identifier’a bakarak ve destination vererek nasıl görünmesi gerektiğini söylüyorum. Görünümünü ayarladıktan sonra sayfanın butona tıklayarak gitmesi için butonun IBAction’ını ekliyorum ve performSegue fonksiyonunu seçerek identifier’ımı veriyorum.

@IBAction func goButtonClicked(_ sender: Any) {
        performSegue(withIdentifier: "goToSecondView", sender: self)
    }
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "goToSecondView"{
            let secondView = segue.destination
            secondView.modalPresentationStyle = .fullScreen
        }
        
    }

Artık nasıl sayfalar arası geçiş yapabileceğimizi öğrendiğimizi düşünüyorum. Şimdi sayfalar arası geçiş yapar iken veri göndermek istiyorum. Bunun için SecondViewController’ıma gidiyorum ve bir tane data adında boş string veriyorum. ViewController’da tanıttığımız secondView’ın aslında bir SecondViewControler olduğunu söylüyorum. secondView.data’ya textfield içerisine yazdığım text’i veriyorum ve uygulamayı çalıştırdığımızda veriyi gönderebiliyoruz. SecondViewController’dan geri dönmek için ise buton için bir @IBAction oluşturuyoruz ve dismiss fonksiyonu ile geri dönebiliyoruz.

import UIKit

class ViewController: UIViewController {

    @IBOutlet weak var textField: UITextField!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
    }
    
    @IBAction func goButtonClicked(_ sender: Any) {
        performSegue(withIdentifier: "goToSecondView", sender: self)
    }
    
    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
        if segue.identifier == "goToSecondView"{
            let secondView = segue.destination as! SecondViewController
            secondView.modalPresentationStyle = .fullScreen
            secondView.data = textField.text!
        }
        
    }

}
import UIKit

class SecondViewController: UIViewController {

    var data = ""
    
   @IBOutlet weak var label: UILabel!
   
    override func viewDidLoad() {
        super.viewDidLoad()
        label.text = data
        // Do any additional setup after loading the view.
    }
    
    @IBAction func goBackButtonClicked(_ sender: Any) {
        dismiss(animated: true, completion: nil)
    }
}

Soru ve görüşlerinizi e-mail veya yorum olarak belirtirseniz sevinirim.