我一直在跟随Apple的Swift教育书,我正在创建一个ToDo列表。我创建了自己的,遇到了这个问题,所以我把所有的代码都撕掉了,直到我得到了一个精确的副本,排成一行的Apple。
使用我的TableViewController子类生成空白单元格。
class ToDoTableViewController: UITableViewController {
var todos = [ToDo]()
在我的TableViewController(在故事板中链接)中,有两个覆盖;一个出队,另一个将一个部分中的行数返回到所有行。
override func tableView(_ tableView: UITableView,
numberOfRowsInSection section: Int) -> Int {
return todos.count
}
override func tableView(_ tableView: UITableView, cellForRowAt
indexPath: IndexPath) -> UITableViewCell {
guard let cell =
tableView.dequeueReusableCell(withIdentifier:
"ToDoCellIdentifier") else {
fatalError("Could not dequeue a cell")
}
let todo = todos[indexPath.row]
cell.textLabel?.text = todo.title
return cell
}
然后使用viewDidLoad覆盖,以便我可以插入样本项。
override func viewDidLoad() {
super.viewDidLoad()
if let savedToDos = ToDo.loadToDos() {
todos = savedToDos
} else {
ToDo.loadSampleToDos()
}
}
Xcode表示这些未被使用。
我的其他文件是ToDo类,包括标题,截止日期等以及我的示例数据:
class ToDo: NSObject {
var title: String
var isComplete: Bool
var dueDate: Date
var notes: String?
init(title: String, isComplete: Bool, dueDate: Date, notes:
String?) {
guard !title.isEmpty else {
fatalError("Reminder requires a non-empty title")
}
self.title = title
self.isComplete = isComplete
self.dueDate = dueDate
self.notes = notes
}
文件中的示例数据:
static func loadSampleToDos() -> [ToDo] {
let todo1 = ToDo(title: "ToDo One", isComplete: false,
dueDate: Date(), notes: "Notes 1")
let todo2 = ToDo(title: "ToDo Two", isComplete: false,
dueDate: Date(), notes: "Notes 2")
let todo3 = ToDo(title: "ToDo Three", isComplete: false,
dueDate: Date(), notes: "Notes 3")
return [todo1, todo2, todo3]
}
我在故事板中将单元格标识符设置为“ToDoCellIdentifier”。
运行它,只有空白单元格。他们为什么空白?
答案 0 :(得分:0)
试试这个。
override func viewDidLoad() {
super.viewDidLoad()
if let savedToDos = ToDo.loadToDos() {
todos = savedToDos
} else {
todos = ToDo.loadSampleToDos()
}
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return todos.count
}