UITableView不显示数据,但已经是DataSource和Delegate

时间:2017-01-18 18:10:32

标签: ios swift uitableview

我正在尝试创建一个tableView(在一个viewController中),它显示一组数据(我以前做过的事情),但这次它没有显示数据。我已经将viewController声明为tableView的dataSource和Delegate。这是我的viewControllerClass:

class MenuViewController: UIViewController , UITableViewDataSource ,          UITableViewDelegate {

    var menuItems = [ "1" , "2" , "3"]

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.


    }

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

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

    open func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)

        cell.textLabel?.text = menuItems[indexPath.row]

        return cell

    }
}

3 个答案:

答案 0 :(得分:0)

请检查您是否使用xib / Storyboard创建UITableView,然后使用数据源创建UITableView并委托连接出口。否则,如果以编程方式创建它,则设置委托和数据源。

答案 1 :(得分:0)

您应该在viewDidLoad()中注册单元格,如下所示:

tableView.register(UITableViewCell.self,reuseIdentifier:" cell")。 希望这有帮助

答案 2 :(得分:0)

你的tableView需要IBOutlet。从故事板,您需要从表视图拖放到MenuViewController。然后在viewDidLoad中,你需要设置datasource和delegate。

override func viewDidLoad() {
        super.viewDidLoad()
        tableView.dataSource = self
        tableView.delegate = self
    }

现在您的表格视图不知道谁将提供数据。因为没有调用numberOfRowsInSection和cellForRow。由于它们未被调用,因此表视图不知道要显示什么。由于表格视图不知道要显示什么,因此不会显示任何内容。