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

问题描述:

我一直在通过关于为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 
} 
} 
+0

尝试'tableView.reloadData ()'后追加toDoItems – Nef10

得到viewDidLoad()摆脱这一行:

tableView = UITableView() 

tableView@IBOutlet应该在你的故事板连接。通过分配UITableView(),您正在创建第二个UITableView,这不是屏幕上的那个。


要将tableView出口连接在故事板,点击圆圈在ViewController中出口并拖动到的tableView左:

Hooking up the tableView IBOutlet

+0

谢谢,非常感谢!我遵循你的建议,现在我的应用程序运行顺利。 –

+0

不客气!我很高兴我能帮上忙! – vacawama