TableviewCell Aksiyonları

Merhaba, bu yazımda tablo hücresini sola kaydırınca çıkan aksiyonları ayarlayacağız.

Tableview çok büyük ve önemli bir konu. Tableview ile ilgili ne anlatmaya kalksam hepsini ayrı derslere ayırmam gerekiyor 🙂

Hücreyi sola kaydırınca çıkan aksiyonlar da bunlar da biri.

İngilizce swipe-to-edit, swipe-to-delete gibi anahtar kelimelerle arayınca çıkıyor fakat türkçe ne yazılır bilemedim 🙂

Neyse, başlayalım.

 

Örnek Uygulama

 

Bu yazıyı takip edebilmeniz için Tableview konusuna giriş seviyesinde de olsa hakim olmanız gerekiyor.

Eğer biraz eksiğiniz olduğunu düşünüyorsanız Tableview Kullanımı ve Custom TableviewCell Kullanımı derslerine bakmanızı tavsiye ederim.

 

Şimdi, zaten çalışan ve tablo verilerini listeleyen bir Tableview yapınızın olduğunu farz edelim.

Bu Tableview yapısına bir de bu bahsettiğim sola çekince çıkan aksiyonlar özelliğini eklemek için şu adımları takip edelim:

 

 

Tableview delegate metodlarını yazdığımız kısma biraz boşluk bırakıp bu metodu ekledik.

Burada UISwipeActionsConfiguration return ediyoruz ve içinde deleteAction isminde bir fonksiyon gönderiyoruz. Birazdan bu fonksiyonu oluşturacağız.

Dikkat ederseniz UISwipeActionsConfiguration bir Array. Yani hücre içine sadece bir aksiyon tanımlamamız gerekmiyor. Birden fazla aksiyonu yan yana koyabiliriz.

Önce ilkini halledelim sonra ikinciye geliriz, kafalar karışmasın 🙂

 

Biz şimdi deleteAction metodu yazalım.

Parametre olarak IndexPath değişken tipi tanımlıyoruz çünkü silme işlemini yaparken hangi hücre üzerinde işlem yaptığımızı bilmemiz gerek. Bu da ancak IndexPath bilgisini elde ederek mümkün.

 

 

 

Eğer players adında bir array kullanarak mTableView ismindeki tabloyu doldurduğumuzu farz edersek önce array in içinden bu elementi silmemiz; daha sonra ise Tableview den bu veriye karşılık gelen hücrenin silinmesi lazım.

Aksiyonun cavcavlı gözükmesini sağladığımız yer ise .image ve .backgroundColor property leri 🙂

İnternetten bulduğunuz bir çöp kutusu ikonunu Asset klasörüne sürükleyin ve delete ismini verin.

Arkaplan rengini ise kırmızı yapmayı tercih edelim.

 

Not:

Bu değişiklikler kalıcı değildir. Kullanım amacınıza göre gerçek hayatta NSUserDefaults veya web servisisindeki bir array elementini oradan silmeniz gerekiyor.

 

Bir de şu metodu yazalım:

 

TableView in bu delegate metodu ise hücrenin editlenebilir/editlenemez ayarını yapmamızı sağlıyor.

Eğer o hücrenin belirli şartlar altında editlenebilir veya editlenemez olmasını ayarlamak istiyorsanız bunu bir koşula bağlamanızı tavsiye ederim.

Örneğin şekildeki gibi Global sınıfı içindeki isAdmin değerini kontrol edebiliriz.

Eğer koşula gerek yok derseniz sadece return true demeniz kafi olacaktır.

 

Şimdi şunu yaptık:

 

 

Bir aksiyon daha…

 

Hadi şimdi bir aksiyon daha ekleyelim! Bu da edit aksiyonu olsun.

deleteAction u kopyalayalım ve birkaç yerini değiştirelim.

 

Bu metodu sadece bir template olsun diye ekledim. İsteğinize göre değiştirin.

Eğer edit aksiyonu almak istiyorsak muhtemelen başka bir sahneye geçiş yapmamız gerekecek ve performSegue kullanacağız. Bu kısmı yorum satırına aldım, uncomment yapmak serbest 🙂

 

Son olarak ilk yazdığımız trailing swipe action delegate metoduna edit aksiyonunu ekleyelim.

 

Burada şuna dikkat edelim: Array e koyduğumuz her element sola eklenerek devam eder.

Yani bu örnekte edit aksiyonu solda, delete aksiyonu ise sağda gözükecek.

 

 

Sonuç

 

Kabataslak olarak hücre aksiyonlarını anlatmaya çalıştım, geliştirmek ise size kalsın 🙂

Umarım faydalı olmuştur.

 

İyi kodlamalar 💻