Saya membuat aplikasi Checklist dengan a UITableView
. Saya ingin tahu bagaimana cara menambahkan swipe untuk menghapus a UITableViewCell
.
Ini adalah ViewController.swift saya:
import UIKit
class ViewController: UIViewController, UITextFieldDelegate, UITableViewDelegate, UITableViewDataSource {
var tableView: UITableView!
var textField: UITextField!
var tableViewData:Array<String> = []
// Define Colors
let lightColor: UIColor = UIColor(red: 0.996, green: 0.467, blue: 0.224, alpha: 1)
let medColor: UIColor = UIColor(red: 0.973, green: 0.388, blue: 0.173, alpha: 1)
let darkColor: UIColor = UIColor(red: 0.800, green: 0.263, blue: 0.106, alpha: 1)
let greenColor: UIColor = UIColor(red: 0.251, green: 0.831, blue: 0.494, alpha: 1)
init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?) {
super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
// Custom initialization
}
override func viewDidLoad() {
super.viewDidLoad()
//Set up table view
self.tableView = UITableView(frame: CGRectMake(0, 100, self.view.bounds.size.width, self.view.bounds.size.height-100), style: UITableViewStyle.Plain)
self.tableView.registerClass(MyTableViewCell.self, forCellReuseIdentifier: "myCell")
self.tableView.backgroundColor = darkColor
//self.tableView.separatorStyle = UITableViewCellSeparatorStyle.None
self.tableView.delegate = self
self.tableView.dataSource = self
self.view.addSubview(self.tableView)
//Set up text field
self.textField = UITextField(frame: CGRectMake(0, 0, self.view.bounds.size.width, 100))
self.textField.backgroundColor = lightColor
self.textField.font = UIFont(name: "AvenirNext-Bold", size: 26)
self.textField.delegate = self
self.view.addSubview(self.textField)
}
//Table View Delegate
func tableView(tableView: UITableView!, numberOfRowsInSection section: Int) -> Int {
return tableViewData.count
}
func tableView(tableView: UITableView!, cellForRowAtIndexPath indexPath: NSIndexPath!) -> UITableViewCell! {
var myNewCell: MyTableViewCell = tableView.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as MyTableViewCell
myNewCell.text = self.tableViewData[indexPath.row]
return myNewCell
}
func tableView(tableView: UITableView!, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
let mySelectedCell:UITableViewCell = tableView.cellForRowAtIndexPath(indexPath)
//Colors
mySelectedCell.detailTextLabel.textColor = UIColor.whiteColor()
mySelectedCell.tintColor = UIColor.whiteColor()
//Setup Details / Date
let myDate:NSDate = NSDate()
var myDateFormatter:NSDateFormatter = NSDateFormatter()
myDateFormatter.dateStyle = NSDateFormatterStyle.MediumStyle
mySelectedCell.detailTextLabel.text = myDateFormatter.stringFromDate(myDate)
mySelectedCell.accessoryType = UITableViewCellAccessoryType.Checkmark
mySelectedCell.backgroundColor = greenColor
}
override func prefersStatusBarHidden() -> Bool {
return true
}
//Text Field Delegate
func textFieldShouldReturn(textField: UITextField!) -> Bool {
tableViewData.append(textField.text)
textField.text = ""
self.tableView.reloadData()
textField.resignFirstResponder()
return true
}
}
Dan ini adalah MyTableViewCell.swift:
import UIKit
class MyTableViewCell: UITableViewCell {
let medColor: UIColor = UIColor(red: 0.973, green: 0.388, blue: 0.173, alpha: 1)
init(style: UITableViewCellStyle, reuseIdentifier: String) {
super.init(style: UITableViewCellStyle.Subtitle, reuseIdentifier: reuseIdentifier)
self.textColor = UIColor.whiteColor()
self.backgroundColor = medColor
self.selectionStyle = UITableViewCellSelectionStyle.None
}
override func awakeFromNib() {
super.awakeFromNib()
// Initialization code
}
override func setSelected(selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// Configure the view for the selected state
}
}
Saya menggunakan iOS8 sebagai target penyebaran (tidak yakin akan membuat perbedaan).
ios
uitableview
swift
jnnoon
sumber
sumber
Jawaban:
Tambahkan dua fungsi ini:
Swift 3.0:
Cepat 4.2
sumber
}
. Butuh 5 menit total untuk mengetahuinya: pAnda dapat mencoba ini:
sumber
beingUpdates()
danendUpdates()
. Anda tidak sering melihatnya dan saya hanya melihat mereka adalah bagian dari ceramah Praktik Terbaik WWDC.Cara lain yang memungkinkan Anda untuk mengubah teks "Hapus" dan menambahkan lebih banyak tombol saat menggeser sel adalah menggunakan
editActionsForRowAtIndexPath
.canEditRowAtIndexPath
dancommitEditingStyle
masih diperlukan, tetapi Anda dapatcommitEditingStyle
mengosongkannya sejak penghapusan ditanganieditActionsForRowAtIndexPath
.sumber
UITableViewController
dan Anda mengganti metode ini, maka ya tanda tangan harus kembali[UITableViewRowAction]?
. Namun, ketika Anda tidak mewarisi dariUITableViewController
, saat itulah metode harus kembali[AnyObject]?
. Kupikir aku akan menjelaskan kapan harus menggunakannya sehingga siapa pun yang membaca ini tidak hanya menebak.sumber
Ini fitur baru di iOS11 dan Swift 4.
Tautan referensi:
Trailing Swipe:
sumber
Gunakan :
semoga membantu anda
sumber
Swift 4 - @available (iOS 11.0, *)
sumber
Swift 3:
sumber
Swift 3 dengan judul khusus yang didukung
sumber
Saya menggunakan tableViewCell untuk menampilkan banyak data, setelah menggesek () kanan ke kiri pada sel, ia akan menampilkan dua tombol Menyetujui mengambil satu argumen.
sumber
Pada Xcode 6.1.1, ada beberapa perubahan kecil pada jawaban Dash.
sumber
Bekerja untuk saya di Swift 2.0
sumber
"Block"
?Di Swift 4 tableview add, geser untuk menghapus UITableViewCell
sumber
sumber
Cepat 4
sumber
Cukup tambahkan metode:
sumber
di sini Lihat hasil saya Swift dengan tombol sepenuhnya dapat disesuaikan didukung
sumber
SWIFT 3 - UIViewController
sumber
cepat 3
sumber
cukup tambahkan ini dengan asumsi array data Anda adalah 'data'
sumber
sumber
sumber
Cepat 5
Karena UITableViewRowAction sudah tidak digunakan lagi di iOS 13.0 sehingga Anda dapat menggunakan UISwipeActionsConfiguration
sumber