iOS Programlamada Segue Kullanımı

Merhabalar Arkadaşlar,

Bugünkü yazımda Swift-4 kullanarak iOS programlamada Segue kullanımından bahsedeceğim. Hazırsanız haydi başlayalım :)

Segue Nedir ?

Segue, uygulamanızın storyboard dosyasındaki iki görüntüleme denetleyicisi arasında bir geçişi tanımlamaktadır. Ekranlar arası geçişi ifade eder. Android programlamada bu yapının karşılığı Intent dir. Segue kısaca bir sayfadan başka bir sayfaya geçmeye yarayan yapının adıdır.

Segue’ye Hazırlık - View Controller Ekleme

Segue oluşturmadan önce yapmamız gereken ilk iş yeni bir View Controller alıp ekrana bırakmak. Bırakılan görüntüyü düzenliyoruz.

Sol taraftaki projenin ilk View Controller bileşeni sağ tarafta ise yeni eklenen View Controller. Eklenen yapının bir Controller dosyası lazım. Bu dosya default olarak gelmemektedir. Biz bu dosyayı oluşturunca bu Controller da tanımlanmış objeleri rahatlıkla kullanıp işlemler yapabileceğiz. Aşağıdaki adımları takip ederek yeni bir Controller View dosyası oluşturmayı göreceksiniz :

Bir önceki resimde gözüken ekranın Sol üstünde bulunan sarı bir butona butonu seçip File / New / File yolunu izleyerek yeni bir Controller sınıfı tanımlayabilirsiniz. Alt sınıf olarak UIViewController seçiliyor. Ve gerekli işlemler tamamlandı.

Bir sonraki işlemde ise 2.ekranda en üst solda bulunan butona tıklanıp class ismi veriliyor.

Class seçme yerine tıklanıp oluşturduğumuz class seçiliyor.

import UIKit
class SecondViewController: UIViewController {
// sınıfımıza oluşturulan label eklendi
@IBOutlet weak var myLabel: UILabel! 

override func viewDidLoad() {
super.viewDidLoad()
}

Segue Nasıl Oluşturulur ?

Birinci ekrana bir buton ekledik. Butona tıklanınca bir sonraki sayfaya gitmesi için buton seçiliyken alt tuşuna basılarak ikinci ekrana bir ok çıkarılır. Ok çıkarıldıktan sonra bizlere hangi tür Segue kullanacaksın diye bir seçenek sunuyor. Biz ise show türünü seçerek aşağıdaki görüntüyü elde ediyoruz.

Yukarıda anlatıldığı gibi ok ile Segue oluşturulmuş oldu. Ok ile gösterilen bağlantı seguelerin olduğunu ifade eden yapılardır.

Test Aşaması

Artık uygulamayı deneme zamanı geldi. Run tuşuna basıp uygulamayı başlatıyoruz.

Açılış ekranında 1. View Controller şeklinde bir label ve Go adına bir buton gözükmektedir. Kullanıcı go butonuna tıklayarak bir sonraki sayfaya gidebilecek. Bizlerde o butona tıklayarak bir sonraki sayfaya gidiyoruz ve bizi 2. View Controller text’i karşılıyor.

Örnek 2 : Kullanıcının adını bir sonraki sayfada gösterme

Evet Arkadaşlar her zaman buton ile bir sayfadan başka bir sayfaya geçeceğiz diye bir kural yok. Bu örneğimizde kullanıcının adını alarak bir sonraki ekrandan diğerine aktarma işlemini yapacağız.

Basit bir şekilde ekran tasarımı yaptık. Sağdaki ekrana bir kaydetme butonu ve birde text alanı ekledik. İkinci ekranda ise girilen text’in gösterilmesi için label eklendi.

Bir önceki örnekte butona basılınca ona özgü segue oluşturmuştuk. Bu örnekte ise yukarıdaki sarı butona basıp ctrl tuşu ile sürükle bırak mantığını kullanarak tüm ekrana segue ataması yaptık. Artık kullanıcı save butonuna tıklayarak direkt diğer sayfaya geçebilecek.

Bu kullanımda seguelerin denetimini kolaylaştırmak için identifier veriyoruz. Bu yapayı metodun içerisinde kullanacağız.

@IBAction func saveClicked(_ sender: Any) {
username = nameText.text! // alınan değer text içeriğindeki değere eşit olacak
performSegue(withIdentifier: “allCV”, sender: nil) // segue çalışması için gerekli metod
}

performeSegue metodu ile oluşturduğumuz segue’yi başlatabiliyoruz. Kullanıcıdan text değeri alınıp userName değişkenine atanıyor.

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { // segue başlamadan önce çalışacak fonksiyon
if segue.identifier == "allCV"{
// değişken gibi işleme tabi tutmak için yapıldı.
let destinationVC = segue.destination as! SecondViewController // artık bu yapıya ait tüm özelliklere erişim mevcut hale geldi.
destinationVC.name = username // ikinci ekrandaki name değişkeni ile birinci ekrandaki username değeri eşleştirildi.
}}

Segue başlamadan önce gidilecek olan ekranın destination’ına bakılıyor. Eğer verilen değer ile uyuşuyorsa oradaki name değerine ilk ekrandaki değeri eşitleme işlemi yapılıyor.

var name = “”
override func viewDidLoad() {
super.viewDidLoad()
nameLabel.text = “Name is : \(name)”
}

Son olarak kullanıcı butona tıklayarak eşleşen verileri ikinci ekranda göstermek için viewDidLoad() fonksiyonunda oluşturulan name değişkenini label’ın text değerine atayarak işlemi sonlandırıyoruz.

Ekran açıldı ve name olarak Halil değerini girdim. Save tuşuna basarak bir sonraki ekrana yönlendirildim. İkinci ekranda “Name is : Halil” yazısı ile karşılaştım. Yukarıdaki back tuşuna basarak geriye gidebilirsiniz.

Evet Arkadaşlar elimden geldiğince sizlere Segue kullanımından bahsettim. İnşallah yararlı olur. Bir sonraki yazıda görüşmek üzere kendinizi iyi bakın. Bol kodlu günler dilerim :)