Estou fazendo um aplicativo CheckList com um UITableView
. Eu queria saber como adicionar um furto para excluir um UITableViewCell
.
Este é o meu 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
}
}
E este é 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
}
}
Estou usando o iOS8 como destino de implantação (não tenho certeza da diferença que isso fará).
ios
uitableview
swift
jdnoon
fonte
fonte
Respostas:
Adicione estas duas funções:
Swift 3.0:
Swift 4.2
fonte
}
. Levei 5 minutos para descobrir isso: pVocê pode tentar isso:
fonte
beingUpdates()
eendUpdates()
. Você não os vê frequentemente e acabei de ver que eles faziam parte da palestra sobre as melhores práticas da WWDC.Outra maneira que permite alterar o texto de "Excluir" e adicionar mais botões ao deslizar uma célula é usar
editActionsForRowAtIndexPath
.canEditRowAtIndexPath
ecommitEditingStyle
ainda são necessários, mas você pode deixar emcommitEditingStyle
branco porque a exclusão é realizadaeditActionsForRowAtIndexPath
.fonte
UITableViewController
e você está substituindo esse método, sim, a assinatura deve retornar[UITableViewRowAction]?
. No entanto, quando você não está herdandoUITableViewController
, é quando o método deve retornar[AnyObject]?
. Pensei em esclarecer quando usar qual, para quem lê isso não está apenas adivinhando.fonte
É novo recurso no iOS11 e Swift 4.
Link de referência:
Deslize à direita:
fonte
use-o :
espero que ajude você
fonte
Swift 4 - @ disponível (iOS 11.0, *)
fonte
Swift 3:
fonte
Swift 3 com título personalizado suportado
fonte
Eu usei o tableViewCell para mostrar vários dados; depois de deslizar () da direita para a esquerda em uma célula, ele mostrará dois botões. leva um argumento.
fonte
A partir do Xcode 6.1.1, existem algumas pequenas alterações na resposta do Dash.
fonte
Funciona para mim no Swift 2.0
fonte
"Block"
faz?No Swift 4 tableview adicionar, deslize para excluir UITableViewCell
fonte
fonte
Swift 4
fonte
Basta adicionar o método:
fonte
aqui Veja meu resultado Swift com botão totalmente personalizável suportado
fonte
SWIFT 3 - UIViewController
fonte
rápido 3
fonte
basta adicioná-los, assumindo que sua matriz de dados é 'data'
fonte
fonte
fonte
Swift 5
Como UITableViewRowAction foi descontinuado no iOS 13.0, você pode usar UISwipeActionsConfiguration
fonte