Bir önceki yazımızda swift ile TableView kullanarak listelemenin nasıl yapıldığını göstermiştik. Şimdi ise listelediğimiz verilere tıklama olayını ekleyeceğiz. Bu tıklama olayı ile listelenen ülkelere tıkladığımızda o ülke ile ilgili bilgiler gelecek.
Aşağıda listelediğimiz ülkeler bulunmaktadır.
TableView click listener olayı didSelectRowAt fonksiyonu ile yapılmaktadır. Şimdi aşağıdaki gibi bu fonksiyonu ViewController.swift dosyasına ekleyelim.
1 2 3 |
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { //code } |
fonksiyonu ekledikten sonra main.storyboard tasarım bölümüne geçip ülkelerde ilgili bilgilerin gösterileceği bir viewcontroller eklememiz gerekiyor. Aşağıda görüldüğü gibi yandaki nesnelerin olduğu bölümden viewcontoller nesnesine tıklayıp ekranın ortasına sürükleyelim.
eklediğimiz bu ViewController ekranı ile ilgili kodları yazacağımız bir swift dosyası eklememiz gerekiyor. Aşağıda nasıl ekleyeceğimiz gösterilmiştir.
Öncelikle soldaki menüde proje ismimiz seçiliyken File/New/File deyip dosyayı seçeceğimiz ekranın açılmasını sağlayalım.
ekran açıldıktan sonra Cocoa Touch Class dosyasını seçip next diyoruz.
ileri dedikten sonra karşımıza çıkan ekranda sınıf adını girip subclassını ekrandaki gibi belirleyip next diyoruz. Daha sonra çıkan ekranda create deyip bitiriyoruz.
Oluşturduğumuz ViewController ekranına UlkelerDetay.swift dosyasnı bağlamak için main.storyboard ekranında iken yeni ekranı aşağıdaki gibi seçip custom class bölümünden oluşturduğumuz UlkelerDetay dosyasını seçiyoruz. Seçme işleminden sonra hemen alt kısımda bulunan Storyboard ID kutucuğuna da UlkelerDetay yazıyoruz. Bu işlemden sonra tasarım ekranı ile kodları yazacağımız dosyayı birbirine bağlamış olduk.
Bu işlemlerden sonra yeni oluşturduğumuz ekranda aşağıdaki gibi ülke adı ve nüfusunu göstermek için tasarımını yapıp UlkelerDetay.swift dosyasına bağlayalım.
main.storyboard kısmında yapacağımız son şey ülkelere tıkladıktan sonra gelen ekrandan tekrar geri ülkeler listesine gelmek için Navigation Controller eklemektir. Navigation Controller’ı TableView’in bulunduğu ekran seçiliyken aşağıdaki gibi Editor/Embed in/Navigation Controller seçip ekrana getiriyoruz.
swift-navigation-bar-eklemeNavigation controller ekledikten sonra şimdi sıra geldi iki ekranı birbirine bağlamaya. Aşağıdaki şekilde farenin sağ tuşuyla bağlama işlemi yaparken bıraktığımızda show tuşuna basıyoruz.
Main.storyboard sayfasında işimiz bitti. Şimdi sıra geldi kodlama kısmına. Ülkelerin nüfuslarının gösterileceği dosyada bir nüfus dizisi ve index değerinin tutulacağı bir static değişken oluşturalım.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import UIKit class UlkelerDetay: UIViewController { @IBOutlet weak var ulkeadi: UILabel! @IBOutlet weak var nufus: UILabel! var ulkenufuslari: [String] = ["80.000.000","100.000.000","120.000.000","90.000.000","60.000.000","70.000.000","50.000.000"] static var index = 0 override func viewDidLoad() { super.viewDidLoad() } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } |
bu sayfada ülke isimlerini çağırmamız için öncelikle bir ViewController nesnesi oluşturalım.
1 |
var nesne = ViewController() |
burada nesne yazıp noktaya tıkladığımda kullanabileceğimiz değişken ve fonksiyonlar listelenir. Ülke adı ve nüfusların gösterilmesi için aşağıdaki kodları dosyamıza ekliyoruz.
1 2 3 |
var nesne = ViewController() ulkeadi.text = nesne.ulkeler[UlkelerDetay.index nufus.text = ulkenufuslari[UlkelerDetay.index] |
UlkelerDetay.swift dosyamızın son hali aşağıdaki gibidir.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import UIKit class UlkelerDetay: UIViewController { @IBOutlet weak var ulkeadi: UILabel! @IBOutlet weak var nufus: UILabel! var ulkenufuslari: [String] = ["80.000.000","100.000.000","120.000.000","90.000.000","60.000.000","70.000.000","50.000.000"] static var index = 0 override func viewDidLoad() { super.viewDidLoad() var nesne = ViewController() ulkeadi.text = nesne.ulkeler[UlkelerDetay.index] nufus.text = ulkenufuslari[UlkelerDetay.index] } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } } |
son olarak sıra geldi didselectrow fonksiyonumuzun içini doldurmaya. ViewController.swift dosyasına gidiyoruz.
1 2 3 4 5 6 7 8 |
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { UlkelerDetay.index = Int(indexPath.row) let sahne: UIViewController = storyboard?.instantiateViewController(withIdentifier: "UlkelerDetay") as! UlkelerDetay self.present(sahne, animated: true, completion: nil) } |
yukarıda da görüldüğü gibi indexpath.row değerini integer tipe çevirip index değişkenine atıyoruz ve daha sonra nüfus bilgilerin göstereceğimiz ekranı çağırıyoruz.
şimdi uygulamamızı çalıştıralım. Gelen listede Türkiye’ye tıkladığımızda ülke adı ve nüfus bilgileri aşağıdaki gibi gelecektir. Aynı şekilde Portekiz’e tıkladığımızda da aşağıdaki gibi bilgileri gelecektir.