UIKit ile Swipe İşlemleri Nasıl Yapılır?
Merhaba, bu yazıda UITableViewCell için işlevselliği arttıracak swipe işlemlerini nasıl entegre edeceğimizi öğreneceğiz. Material Design standartları tarafından da önerilen swipe işlemleri kullanıcı tecrübesini yükselten öğelerden biridir.
Giriş
iOS 11 ile getirilen özellik soldan sağa (leading) veya sağdan sola (trailing) şeklinde tanımlanabilmektedir. Temel anlamda .normal ve .destructive stillerini verebildiğimiz swipe işlemlerini UIContextualAction içinde oluşturmaktayız. Style, title ve handler parametrelerini alan UIContextualAction classını birden çok oluşturup ilgili swipe işlemi için kullanabiliyoruz. Daha fazla konuşmadan biraz kod yazalım.
Hadi Kodlayalım
Öncelikle halihazırda bir UITableView tanımladığımızı varsayıyorum. UITableViewCell’in başlangıç kısmına swipe işlemi eklemek için aşağıdaki kodu kullanıyoruz.
override func tableView(_ tableView: UITableView, leadingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { }
Tam tersi swipe işlemini UITableViewCell’in sonuna eklemek içinse trailing halini kodumuza eklememiz gerekiyor.
override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { }
Şimdi bu fonksiyonlarımızın içini dolduralım. Eminim farketmişsinizdir. Fonksiyonlarımız dönüş tipi olarak optional UISwipeActionsConfiguration istemekte. Burada Swift’in bize sağladığı yapı sayesinde trailing veya leading swipe işlemleri için birden çok action tanımlayabiliyoruz.
override func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { let favouriteaction = UIContextualAction(style: .normal, title: "Edit") { [weak self] (action, view, completionHandler) in self?.handleMarkAsFavourite() completionHandler(true) } favouriteaction.backgroundColor = .systemBlue let deleteaction = UIContextualAction(style: .destructive, title: "Delete") { [weak self] (action, view, completionHandler) in self?.handleMoveToTrash(index: indexPath.row) completionHandler(true) } deleteaction.backgroundColor = .systemRed return UISwipeActionsConfiguration(actions: [favouriteaction, deleteaction])}
Son Söz
Bu yazıda UITableViewCell için vazgeçilmez olan swipe işlemlerini nasıl tanımlayabileceğimizi anlatmaya çalıştım. Umarım bu yazı ile uygulamalarınız biraz daha zenginleştirmiş olursunuz. Herkese mutlu günler.