Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. iOS SDK
Code

iOS Temelleri: UIAlertView ve UIAlertController

by
Difficulty:BeginnerLength:ShortLanguages:

Turkish (Türkçe) translation by Alper Kayabasi (you can also view the original English article)

iOS yazılım geliştirme dünyasına sadece yeni adım atmış bile olsanız, muhtemelen UIAlertView hakkında bilginiz vardır.  UIAlertView gayet basit bir arayüze sahiptir ve modal uyarılar göstermek için kullanılır.

Fakat iOS 8 ile birlikte, Apple UIAlertView sınıfını yeniledi. Artık, action sheet ve modal uyarılar göstermek için UIAlertController sınıfının kullanımı tavsiye ediliyor. Bu kısa tutorial'da, size UIAlertView dan UIAlertController a geçiş yapmanın ne kadar kolay olduğunu göstereceğim.

1. Proje Kurulumu

Xcode 6.3+ uygulamasını açın ve Single View Application template'ini kullanarak yeni bir proje yaratın.

Choose the Single View Application Template

Projenin adını Alerts yapın, Dil olarak Swift seçin, cihaz olarak da iPhone seçin. Xcode'a projeyi nereye kaydetmek istediğinizi söyleyin ve Create diyin.

Configure the Project

Başlangıç olarak, bir alert view'ı tetikleyen buton ekleyelim. Main.storyboard u açın ve view controller'ın view'ı üzerine bir buton ekleyin. Butonun yazısını Show Alert olarak değiştirip, yerini sabitlemek için gerekli constraint'leri ekleyin.

Create a Simple User Interface

ViewController.swift dosyasını açıp sınıf implementasyonuna bir action ekleyin. Şu an için action'ın implementasyonunu boş bırakın. Main.storyboard a geri dönüp view controller'ın showAlert metodunu butonun Touch Up Inside event'i ile bağlayın.

2UIAlertView

UIAlertView sınıfını kullanarak basit bir uyarı göstererek başlayalım. Daha önce de bahsettiğim gibi, UIAlertView gayet basit bir görünüme sahip. Ufak tefek detaylarla biz uğraşmıyoruz, işletim sistemi kendisi hallediyor. showAlert metodunun son hali aşağıdaki gibi gözükecek.

Oluşturma işlemi gayet basit. Başlık ve mesaj metni, delegate objesi, iptal butonu için bir başlık, ve eğer varsa diğer butonlar için başlık veriyoruz.

Oluşturma esnasında verdiğimiz delegate objesi, UIAlertViewDelegate protokolüne uymak zorunda. Mevcut view controller aynı şekilde alert view'ın delegate'i gibi davranacak. Bu yüzden ViewController sınıfımız da UIAlertViewDelegate protokolüne uymak durumunda.

UIAlertViewDelegate metodları, opsiyonel olarak tanımlanmıştır. En sık olarak kullandığımız metod alertView(_:clickedButtonAtIndex:) Bu metod, kullanıcı alert view'ın herhangi bir butonuna bastığında tetiklenir. Aşağıda, alertView(_:clickedButtonAtIndex:) metodunun son halinin nasıl olması gerektiğini görebilirsiniz.

Şimdi projeyi iOS Simulator kullanarak build edip çalıştıralım ve her şeyin gerektiği gibi olup olmadığını kontrol edelim.

3. UIAlertController

UIAlertController görünümü UIAlertView dan oldukça farklı, fakat bir kaç kez kullandıktan sonra Apple'ın neden UIAlertController kullanmayı teşvik ettiği mantıklı gelmeye başlıyor. Zamanla alışacağımız oldukça temiz bir görünümü var.

UIAlertController kullanmanın ilk avantajı, kullanıcı interaksiyonunu kontrol eden bir delegate protokolünün bulunmaması. Bu, bizim sadece showAlert metodumuzu biraz değiştirmemiz gerektiği anlamına geliyor. Metodumuzun aşağıdaki son haline bir göz atalım.

Oluşturmak gayet kolay. Benzer şekilde bir başlık, mesaj metni, ve daha önemlisi UIAlertControllerStyle.Alert veya kısaca .Alert property'sine tercih ettiğimiz stili vermemiz gerekiyor. Tercih edilen stil, işletim sistemine alert controller'ın .ActionSheet olarak mı yoksa .Alert olarak mı gösterileceğini söylüyor.

Daha önceden her buton için bir başlık metni ve UIAlertViewDelegate protokolü ile kullanıcı interaksiyonunu kontrol ediyorduk. Şimdi bunun yerine direk alert controller'a action ekliyoruz. Eklediğimiz her action, UIAlertAction sınıfının bir örneği. Bir UIAlertAction oluşturmak gayet basit. Oluşturma metodu başlık metni, stil, bir de handler'a ihtiyaç duyar. Stil, UIAlertActionStyle tipinde olmalıdır. Handler ise, yalnızca UIAlertAction tipini kabul eder ve en son çağrılır.

Delegate protokol yerine handler kullanımı, modal alert'in implementasyonunu anlaşılması daha kolay ve temiz bir hale getirir. Bununla birlikte, eğer birden fazla modal alert ile çalışıyorsanız, artık alert view'lara tag vermeye gerek yok.

Kullanıcıya bir alert controller göstermeden önce, iki action'ı alertController'a addAction(_:) metodunu çağırarak ekleyebiliriz. Fakat modal alert'in butonlarının sırasının action'ların eklenme sırası ile belirlendiğini unutmamak gerekir. Action'ları hangi sırada eklediysek, butonlar da ona göre handle edilecektir.

UIAlertControllerUIViewController 'ın bir subclass'ı olduğundan, bunu kullanıcıya göstermek için presentViewController(_:animated:completion:) metodunu çağırmak yeterlidir. Temiz.

4. UIActionSheet

Beklendiği gibi, Apple ayrıca UIActionSheet sınıfını ve UIActionSheetDelegate protokolünü de yeniledi. iOS 8 ile birlikte, artık kullanıcılara action sheet göstermek için de UIAlertController kullanılması öneriliyor.

Bir action sheet göstermek ise modal alert göstermek ile neredeyse aynı şekilde. Aradaki tek fark preferredStyle property'si, ki bu durumda UIAlertControllerStyle.ActionSheet veya direk .ActionSheet olarak tanımlamamız gerekiyor.

Sonuç

UIAlertView ve UIActionSheet iOS 8 ile birlikte yenilenmiş olsa da, yakın gelecekte onları kullanmaya devam edebilirsiniz. UIAlertController'ın arayüzü ise yok sayması zor bir yenilik. Modal alert ve action sheet kullanımını basitleştiriyor ve tek bir sınıf altında birleştiriyor. Ve UIAlertController aynı zamanda bir UIViewController alt sınıfı olduğu için, API kullanımı da oldukça tanıdık.

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.