Ich mache eine CheckList-Anwendung mit einem UITableView
. Ich habe mich gefragt, wie ich einen Wisch hinzufügen kann, um einen zu löschen UITableViewCell
.
Dies ist mein 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
}
}
Und das ist 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
}
}
Ich verwende iOS8 als Bereitstellungsziel (ich bin mir nicht sicher, welchen Unterschied es machen wird).
ios
uitableview
swift
jdnoon
quelle
quelle
Antworten:
Fügen Sie diese beiden Funktionen hinzu:
Swift 3.0:
Swift 4.2
quelle
}
. Ich habe insgesamt 5 Minuten gebraucht, um das herauszufinden: pSie können dies versuchen:
quelle
beingUpdates()
undendUpdates()
. Sie sehen sie nicht oft und ich habe gerade gesehen, dass sie Teil des WWDC Best Practices-Vortrags waren.Eine andere Möglichkeit, den Text von "Löschen" zu ändern und beim Verschieben einer Zelle weitere Schaltflächen hinzuzufügen, ist die Verwendung
editActionsForRowAtIndexPath
.canEditRowAtIndexPath
undcommitEditingStyle
sind noch erforderlich, aber Sie könnencommitEditingStyle
leer lassen, da das Löschen in behandelt wirdeditActionsForRowAtIndexPath
.quelle
UITableViewController
und Sie diese Methode überschreiben, muss die Signatur zurückgegeben werden[UITableViewRowAction]?
. Wenn Sie jedoch nicht erbenUITableViewController
, sollte die Methode zurückgegeben werden[AnyObject]?
. Ich dachte, ich würde klären, wann ich welche verwenden soll, damit jeder, der dies liest, nicht nur rät.quelle
Es ist eine neue Funktion in iOS11 und Swift 4.
Referenzlink:
Trailing Swipe:
quelle
benutze es :
hoffe es hilft dir
quelle
Swift 4 - @available (iOS 11.0, *)
quelle
Swift 3:
quelle
Swift 3 mit unterstütztem benutzerdefinierten Titel
quelle
Ich habe tableViewCell verwendet, um mehrere Daten anzuzeigen. Nach dem Wischen () von rechts nach links in einer Zelle werden zwei Schaltflächen angezeigt. Genehmigen und ablehnen. Es gibt zwei Methoden: Die erste ist ApproveFunc, die ein Argument akzeptiert, und die andere ist RejectFunc, die ebenfalls nimmt ein Argument.
quelle
Ab Xcode 6.1.1 gibt es einige winzige Änderungen an der Antwort von Dash.
quelle
Funktioniert für mich in Swift 2.0
quelle
"Block"
funktioniert?Wischen Sie in Swift 4 tableview add, um UITableViewCell zu löschen
quelle
quelle
Swift 4
quelle
Fügen Sie einfach die Methode hinzu:
quelle
hier Siehe mein Ergebnis Swift mit vollständig anpassbarer Schaltfläche unterstützt
quelle
SWIFT 3 - UIViewController
quelle
schnell 3
quelle
Fügen Sie diese einfach hinzu, vorausgesetzt, Ihr Datenarray ist "Daten".
quelle
quelle
quelle
Swift 5
Da UITableViewRowAction in iOS 13.0 veraltet war, können Sie UISwipeActionsConfiguration verwenden
quelle