İçeriğe geç

Swift ile Delegation mantığı

swift

Merhabalar bu yazımda Swift programlama dilinde bulunan OOP yapıya ek olarak POP yapısı yani Protocol‘e yönelik programlama anlayışında önemli bir unsur olan Delegate mantığından bahsedeceğim.

Swift ile daha önceki yazılarımda Protocol konusu ile ilgili yazılar yazdım. Delegate mantığıda protokol aracılığı ile sağlanmakta. Yazılan protokolde kullanılan sınıflar değişkenler,subscriptler diğer çağrılan sınıfta kullanılmak zorunda. Tabi eğer protocol içinde optional olarak tanımlanmadıysa.

İOS programlamada ve diğer watchOS,macOS hepsinde sistem aynı gömülü sınıflar delegate ve datasource olarak kendi sınıflarımıza bağlanıp veri alışverişi yapmakta. Bu yüzden anlaşılması çok önemli konular arasında yer alıyor.

Aşağıda verdiğim ilk örnekte SecondVC adında bir sınıfımız ve buna bağlı bir sayfa var. Küçük bir protocol yazdım ve içerisinde delegate değişkeni olarak yazdığımız protocol tipinde. Başka bir sınıfı bu protocole bağlayıp delegate yardımıyla veri göndereceğiz.

Diğer bir örnekte ise bu sınıfta yazdığımız protokolu kullanacağız.

Daha sonra prepareForSegue methodunda ikinci sınıfın kullanımına erişip delegate değişkenini self ekledik. En önemli kısım burası çünkü self dediğimiz bu sınıfta o protokole bağlı fonksiyondur. getKey() ‘den dönen veriler segu.delegate = self aracılığıyla diğer sınıfa bağlanmış oldu.

Tarih:Swift

3 Yorum

  1. MNT MNT

    Hiç anlaşılır değil lütfen daha anlaşılır örnek yazar mısınız. Ben hala anlamadım delegate olayını.
    Neden video çekerek anlatmıyorsunuz da yazı yazıyorsunuz? Videolarda en azından youtubeden izleyip nereye tıkladığınızı nereye hangi kodu yazdığınızı anlayabiliyoruz. Ayrıca videonun altına da soru da sorabiliriz.
    Apple’ın kendi sayfasındaki örnekler üzerinden neden anlatmıyorsunuz?
    Örneğin:

    class ViewController: UIViewController, UITextFieldDelegate {

    override func viewDidLoad() {
    super.viewDidLoad()
    // Handle the text field’s user input through delegate callbacks.
    nameTextField.delegate = self
    }
    }

  2. Video çekme olayını aslında düşünmüyorum değil. Ancak zaman ayırmak gerek o duruma projelerle uğraşınca pek zaman kalmıyor aslında.

    Delegate konusuna gelince verdiğiniz örnekte UITextFieldDelegate adında protocol yazılmış bu protokolde bazı fonksiyonlar var. UITextView’die bir sınıf tanımlanmış ve içerisinde var delegate:UITextFieldDelegate şeklinde değişken tanımlanmış. Biz bu protokolu kendi sınıfımızda çağırdığımızda biliyor olmanız gerekiyor ki optional olmayan fonksiyonları kullanmamız gerekir. Biz bu fonksiyonları kullandığımızda içerisine kodlarımızı yazıyoruz. Daha sonra tanımladığınız textFieldinizi .delegate = self diyoruz. burdaki self sözcüğü kendi sıfımızda kullandığımız fonksiyonları. UITextView’deki delegate değişkeni yardımıyla erişebilir kıl demek. Bunu daha iyi anlamak için videolar ve kod örnekleri nette mevcut ancak kendiniz örnek yazarsanız daha iyi anlarsınız.

  3. You’ve made some really good points there. I checked on the web for more information about the issue and found most people will go along with your views on this site.

Bu yazı yorumlara kapalı, ama geri izlemeler ve pingback'ler açık.