Tworzę aplikację CheckList z rozszerzeniem UITableView
. Zastanawiałem się, jak dodać przesunięcie, aby usunąć plik UITableViewCell
.
To jest mój 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
}
}
A to jest 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
}
}
Używam iOS8 jako celu wdrożenia (nie jestem pewien, jaka to różnica).
ios
uitableview
swift
jdnoon
źródło
źródło
Odpowiedzi:
Dodaj te dwie funkcje:
Swift 3.0:
Swift 4.2
źródło
}
. Zajęło mi to łącznie 5 minut: pMożesz spróbować tego:
źródło
beingUpdates()
iendUpdates()
. Nie widuje się ich często, a ja właśnie widziałem, że były częścią wykładu WWDC Best Practices.Innym sposobem, który pozwala zmienić tekst "Usuń" i dodać więcej przycisków podczas przesuwania komórki, jest użycie
editActionsForRowAtIndexPath
.canEditRowAtIndexPath
icommitEditingStyle
są nadal wymagane, ale możesz pozostawićcommitEditingStyle
puste, ponieważ usuwanie jest obsługiwane weditActionsForRowAtIndexPath
.źródło
UITableViewController
i nadpisujesz tę metodę, to tak, podpis musi zostać zwrócony[UITableViewRowAction]?
. Jednak jeśli nie dziedziczisz zUITableViewController
, wtedy metoda powinna powrócić[AnyObject]?
. Pomyślałem, że wyjaśnię, kiedy tego użyć, aby każdy, kto to czyta, nie tylko zgadywał.źródło
To nowa funkcja w iOS11 i Swift 4.
Link referencyjny:
Trailing Swipe:
źródło
Użyj tego :
mam nadzieję, że ci to pomoże
źródło
Swift 4 - @available (iOS 11.0, *)
źródło
Swift 3:
źródło
Swift 3 z obsługą niestandardowego tytułu
źródło
Użyłem tableViewCell do pokazania wielu danych, po swipe () od prawej do lewej na komórce pokażą się dwa przyciski Zatwierdź i odrzuć, są dwie metody, pierwsza to ApproveFunc, która przyjmuje jeden argument, a druga to RejectFunc, która również przyjmuje jeden argument.
źródło
W Xcode 6.1.1 nastąpiły drobne zmiany w odpowiedzi Dasha.
źródło
U mnie działa w Swift 2.0
źródło
"Block"
robi?W dodawaniu widoku tabeli Swift 4 przesuń, aby usunąć UITableViewCell
źródło
źródło
Szybki 4
źródło
Po prostu dodaj metodę:
źródło
tutaj Zobacz mój wynik Swift z obsługą w pełni konfigurowalnego przycisku
źródło
SWIFT 3 - UIViewController
źródło
szybki 3
źródło
po prostu dodaj je, zakładając, że twoja tablica danych to „dane”
źródło
źródło
źródło
Szybki 5
Ponieważ UITableViewRowAction został wycofany w iOS 13.0, więc możesz użyć UISwipeActionsConfiguration
źródło