为什么表格视图中的单元格不会显示任何文本?

时间:2017-06-05 00:04:31

标签: ios swift xcode uitableview

我一直在编写一个关于为iOS创建待办事项列表应用程序的在线教程,但我注意到该教程使用了过时版本的Swift(链接:https://www.raywenderlich.com/77974/making-a-gesture-driven-to-do-list-app-like-clear-in-swift-part-1)。我试图根据新标准更正代码,但是当我构建并运行应用程序时,它只显示一个空表:没有文本可见。

我在下面粘贴了我的代码。它包含了我用于调试的几个打印语句,但只有第一个(“hello world”)似乎运行。任何投入将不胜感激。谢谢!

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

@IBOutlet weak var tableView: UITableView!
var toDoItems = [ToDoItem]()

override func viewDidLoad() {
    toDoItems.append(ToDoItem(text: "First text"))
    print("hello world")
    super.viewDidLoad()
    tableView = UITableView()
    tableView.dataSource = self
    tableView.delegate = self
    //self.view.addSubview(self.tableView)
    tableView.register(UITableViewCell.self, forCellReuseIdentifier: "cell")


    if toDoItems.count > 0 {
        return
    }

    toDoItems.append(ToDoItem(text: "text 1"))
    toDoItems.append(ToDoItem(text: "text 2"))
    toDoItems.append(ToDoItem(text: "text 3"))
    toDoItems.append(ToDoItem(text: "text 4"))
    toDoItems.append(ToDoItem(text: "text 5"))
    toDoItems.append(ToDoItem(text: "text 6"))
    toDoItems.append(ToDoItem(text: "text 7"))
    toDoItems.append(ToDoItem(text: "text 8"))
    toDoItems.append(ToDoItem(text: "text 9"))
    toDoItems.append(ToDoItem(text: "text 10"))
    toDoItems.append(ToDoItem(text: "text 11"))
    toDoItems.append(ToDoItem(text: "text 12"))

}

// MARK: - Table view data source

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
}

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return toDoItems.count
}

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
    print("should assign text here")
    let item = toDoItems[indexPath.row]
    cell.textLabel!.text = item.text
    return cell
 }
}

1 个答案:

答案 0 :(得分:1)

viewDidLoad()中删除此行:

tableView = UITableView()

应在 Storyboard 中连接tableView @IBOutlet。通过分配UITableView(),您正在创建第二个UITableView,而不是屏幕上的那个。{/ p>

要连接 Storyboard 中的tableView插座,请点击插座左侧的圆圈,然后将其拖至ViewController中的tableView:

Hooking up the tableView IBOutlet