Je crée une application CheckList avec un fichier UITableView
. Je me demandais comment ajouter un balayage pour supprimer un fichier UITableViewCell
.
C'est mon ViewController.swift:
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
}
}
Et voici 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
}
}
J'utilise iOS8 comme cible de déploiement (je ne suis pas sûr de la différence que cela fera).
ios
uitableview
swift
jdnoon
la source
la source
Réponses:
Ajoutez ces deux fonctions:
Swift 3.0:
Swift 4.2
la source
}
. Il m'a fallu 5 minutes au total pour comprendre ceci: pVous pouvez essayer ceci:
la source
beingUpdates()
etendUpdates()
. Vous ne les voyez pas souvent et j'ai juste vu qu'ils faisaient partie de la conférence sur les meilleures pratiques de la WWDC.Une autre façon qui vous permet de changer le texte de "Supprimer" et d'ajouter plus de boutons lors du glissement d'une cellule est d'utiliser
editActionsForRowAtIndexPath
.canEditRowAtIndexPath
etcommitEditingStyle
sont toujours obligatoires, mais vous pouvez laissercommitEditingStyle
vide car la suppression est gérée danseditActionsForRowAtIndexPath
.la source
UITableViewController
et que vous remplacez cette méthode, alors oui la signature doit retourner[UITableViewRowAction]?
. Cependant, lorsque vous n'héritez pas deUITableViewController
, c'est à ce moment que la méthode doit revenir[AnyObject]?
. Je pensais que je clarifierais quand utiliser lequel donc quiconque lit ceci ne se contente pas de deviner.la source
C'est une nouvelle fonctionnalité dans iOS11 et Swift 4.
Lien de référence:
Balayage final:
la source
utilise le :
j'espère que ça vous aide
la source
Swift 4 - @ disponible (iOS 11.0, *)
la source
Swift 3:
la source
Swift 3 avec titre personnalisé pris en charge
la source
J'ai utilisé tableViewCell pour afficher plusieurs données, après swipe () de droite à gauche sur une cellule, il affichera deux boutons Approuver et rejeter, il existe deux méthodes, la première est ApproveFunc qui prend un argument, et l'autre est RejectFunc qui également prend un argument.
la source
Depuis Xcode 6.1.1, il y a quelques petits changements dans la réponse de Dash.
la source
Fonctionne pour moi dans Swift 2.0
la source
"Block"
fait?Dans Swift 4 tableview ajouter, faites glisser pour supprimer UITableViewCell
la source
la source
Swift 4
la source
Ajoutez simplement la méthode:
la source
ici Voir mon résultat Swift avec bouton entièrement personnalisable pris en charge
la source
SWIFT 3 - UIViewController
la source
rapide 3
la source
ajoutez-les simplement en supposant que votre tableau de données est 'data'
la source
la source
la source
Swift 5
Depuis UITableViewRowAction est obsolète dans iOS 13.0, vous pouvez donc utiliser UISwipeActionsConfiguration
la source