为什么我的UITableView没有显示?

时间:2016-11-18 18:46:53

标签: ios uitableview swift3

我无法弄清楚为什么我的TableView没有显示。它可能是愚蠢的,但我的所有MenuItemStruct都是完整的而不是null,我的表视图似乎正确设置给我。没有错误,但我的cellForRowAt方法没有被调用。请帮帮忙?

class MenuViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    var menuNavigationDelegate: MenuNavigationDelegate?, menuManagerDelegate: MenuManagerDelegate?
    var conferenceId = "conferenceId-1"

    var isDataLoading = false


    @IBOutlet
    var menuTableView: UITableView?

    var menuItems = Array<MenuItemStruct>()

    @IBAction
    func closeMenuTapped() {
        self.menuManagerDelegate?.closeMenu()
    }


    override func viewDidLoad() {
        self.menuTableView?.register(UINib(nibName: "MenuTableViewCell", bundle: nil), forCellReuseIdentifier: "menuCell")
        self.isDataLoading = true
        MenuDataManager.getMenuInformation(conferenceId: self.conferenceId) {
            menuItems, response, error in
            self.menuItems = menuItems!
            self.isDataLoading = false
            DispatchQueue.main.async {
                self.menuTableView?.reloadData()
            }
        }
        self.menuTableView?.reloadData()
    }

    public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cell:MenuTableViewCell = menuTableView!.dequeueReusableCell(withIdentifier: "menuCell", for: indexPath) as! MenuTableViewCell
        if (!self.isDataLoading) {
            cell.setUpCellWithData(menuItem: menuItems[indexPath.row])
        }

        return cell
    }

    public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        if(!self.isDataLoading) {
            return self.menuItems.count
        }
        return 0;
    }

}

1 个答案:

答案 0 :(得分:4)

您需要设置表视图的委托和数据源。您已包含UITableViewDataSourceUITableViewDelegate协议,但尚未在代码中为您的tableview分配委托和数据源。

viewDidLoad

中尝试这样的事情
self.menuTableView.delegate = self
self.menuTableView.dataSource = self