Ich habe Probleme, cellForRowAt zu arbeiten, aber leider bleibt meine Anwendung leer, nachdem ich sie kompiliert habe. Ich verwende Xcode 8.3 Beta 3.Swift cellForRowAt wird nicht angezeigt
import UIKit
class myCell: UITableViewCell {
@IBOutlet var myLabel: UILabel!
@IBOutlet var myImageView: UIImageView!
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 habe eine Lebensmittelklasse erstellt die Arbeit leichter zu machen:
import Foundation
class Food {
var imageName = ""
var description = ""
var moreInfo = ""
init(imageName: String, description: String, moreInfo: String) {
self.imageName = imageName
self.description = description
self.moreInfo = moreInfo
}
}
Und schließlich ist dies die Tableviewcontroller:
import UIKit
class TableViewController: UITableViewController {
var foodArray: [Food] = [Food]()
override func viewDidLoad() {
super.viewDidLoad()
let food1 = Food(imageName: "cake.jpg", description: "Chocolate Cake", moreInfo: "There is nothing better than a great chocolate cake.")
let food2 = Food(imageName: "meringue.jpg", description: "Meringue & Berries", moreInfo: "I really don't like meringue but it's a nice photo.")
let food3 = Food(imageName: "peaches.jpg", description: "Grilled Peaches", moreInfo: "This would be perfect as a summer time dessert.")
let food4 = Food(imageName: "tiramisu.jpg", description: "Tiramisu", moreInfo: "One of my favorite Italian desserts. Yum.")
foodArray.append(food1)
foodArray.append(food2)
foodArray.append(food3)
foodArray.append(food4)
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return foodArray.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath) as! myCell
let foodItem = foodArray[indexPath.row]
cell.myImageView.image = UIImage(named: foodItem.imageName)
cell.myLabel.text = foodItem.description
self.tableView.reloadData()
return cell
}
}
Kann mir bitte jemand zeigen, was ich falsch gemacht habe?
Ist die Methode feuern? Oder sagst du, dass der gesamte Bildschirm leer ist? Weil letzteres ein anderes Problem ist. – dylanthelion
Die Anwendung ist leer – Virtuoso
Ich würde @reinier Melians Vorschläge nehmen, außer jeden reloadData() -Aufruf vollständig entfernen. Lass mich wissen, ob das funktioniert. reloadData() ruft alle Datenquellenmethoden Ihrer Tabellenansicht auf und Sie können hier eine Schleife haben. Für zukünftige Referenz sollten UI-Updates auch im Hauptthread ausgeführt werden. – dylanthelion