0

我制作了一个使用表格视图来保存数据的应用程序。表格视图显示了通过 UserDefaults 保存的数组元素。因为 TableViewControllers 看起来有点丑,所以我做了一点不同:我把一个 TableView 放到一个普通的 ViewController 中。我的问题是:即使我尽我所能让 TableView 显示数据,但它没有,而且我不知道为什么。有人可以帮我吗?这是 ViewController 的代码:

class ErfolgreicheChallenges: UIViewController, UITableViewDelegate, UITableViewDataSource {

    @IBOutlet var myTableView: UITableView!

    var data = [String]()

    override func viewDidLoad() {
        super.viewDidLoad()

        myTableView.delegate = self

        data.append("test")
        data.append("lol")

    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }

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

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        myTableView.dataSource = self

        let cell = myTableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

        cell.textLabel!.text = data[indexPath.row]

        return cell
    }

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    }

}

感谢大家的观看!祝你有美好的一天

4

2 回答 2

3

替换viewDidLoad

override func viewDidLoad() {
    super.viewDidLoad()

    myTableView.dataSource = self
    myTableView.delegate = self

    data.append("test")
    data.append("lol")
    myTableView.reloadData()

}

并替换numberOfRowsInSection

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

并删除myTableView.dataSource = selfcellForRow

如果代码崩溃,则myTableView未在 IB 中连接。

正如评论中提到的,考虑使用UITableViewControllerwhich 获得了一个带有预连接数据源和委托的表视图实例。

于 2017-03-30T16:42:13.287 回答
0

您需要在 viewDidLoad 或类似的地方设置数据源和数据委托。

您正在内部设置数据源cellForRowAt,但永远不会被调用!

于 2017-03-30T16:37:30.237 回答