Ich habe ein Problem mit meinem TableView. Nach dem Hinzufügen einer Abschnittsfußzeile erkannte ich, dass es sich bewegt, wenn ich zum Löschen wische.Beim Wischen zum Löschen wischen der Kopf- und Fußzeilenbereich des TableViews auch
Ich habe ein minimales Projekt mit nur dieser Funktion erstellt, um das Problem zu zeigen, das ich gegenüberstelle. Dies ist das Ergebnis, das ich
Ich habe zwei TableViewCell erhalten: DetailCell
import UIKit
class DetailCell: UITableViewCell {
@IBOutlet weak var myTextLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
und HeaderFooterCell
import UIKit
class HeaderFooterCell: UITableViewCell {
@IBOutlet weak var thisTextLabel: UILabel!
override func awakeFromNib() {
super.awakeFromNib()
}
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
}
}
Dies ist der Tableviewcontroller
import UIKit
class TableViewController: UITableViewController {
override func viewDidLoad() {
super.viewDidLoad()
let statusBarHeight = UIApplication.shared.statusBarFrame.height
self.tableView.contentInset = UIEdgeInsetsMake(statusBarHeight, 0.0, 0.0, 0.0)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
// MARK: - Table view data source
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "myTableViewCell", for: indexPath) as! DetailCell
switch indexPath.row {
case 0: cell.myTextLabel?.text = "one - one - one - one"
case 1: cell.myTextLabel?.text = "two - two - two - two"
case 2: cell.myTextLabel?.text = "three - three - three - three"
case 3: cell.myTextLabel?.text = "four - four - four - four"
case 4: cell.myTextLabel?.text = "five - five - five - five"
default: break
}
return cell
}
override func tableView(_ tableView: UITableView, heightForHeaderInSection section: Int) -> CGFloat {
return 44
}
override func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let cell = tableView.dequeueReusableCell(withIdentifier: "headerOrFooterCell") as! HeaderFooterCell
cell.thisTextLabel.text = "Less"
return cell
}
override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 44
}
override func tableView(_ tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let cell = tableView.dequeueReusableCell(withIdentifier: "headerOrFooterCell") as! HeaderFooterCell
cell.thisTextLabel.text = "More"
return cell
}
// MARK: RowAction for DELETE and MODIFY
override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let delete = UITableViewRowAction(style: .destructive, title: "Delete") { (action, indexPath) in
print ("Delete")
}
let modify = UITableViewRowAction(style: .normal, title: "Modify") { (action, indexPath) in
print("Modify")
}
return [delete, modify]
}
}
Habe ich einen Fehler gemacht oder gibt es eine Möglichkeit, die Kopfzeile und die Fußzeile horizontal zu "blockieren"?
Dies ist korrekt. Sie sollten nicht die Instanz von UITableViewCell für Dinge verwenden, die nicht UITableViewCells sind (zB Kopf- und Fußzeilen), sonst bekommen Sie seltsames Verhalten wie dieses. Ich hatte eine ähnliche Erfahrung mit dem Löschen und Einfügen von Animationen mit UITableViewCell-Kopf- und Fußzeilen. –
Ich habe das getan, und ich habe ein Problem. Jetzt habe ich einen Fehler "mit nicht abgefangener Ausnahme vom Typ NSException beenden". Ich bin ziemlich sicher, dass es etwas mit der Tatsache zu tun hat, dass ich jetzt die Zellen in Code registriere, und ich benutzte Prototyp-Zellen und gab eine Kennung in IB. Also kann ich den Prototyp, den ich für die Kopf- oder Fußzeile gemacht habe, nicht verwenden? – FredericP
Ich habe es. Ich muss eine separate Xib für die Zellen erstellen. Hat gut funktioniert – FredericP