2016-11-18 39 views
1

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

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

检查您已连接的tableview的数据源和委托。你的tableView的插座引用应该像@IBOutlet weak var menuTableView:UITableView!并确保其连接。 – Thahir

+1

你忘了设置tableViews委托和数据源 – shallowThought

+1

请检查你的'numberOfRowsInSection'是否被调用。如果不是,dataSource和委托尚未设置为'UITableView'。如果它被调用,你的'numberOfRowsInSection'必须总是返回0. – Rikh

回答

2

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

尝试这样的事情在你的viewDidLoad

self.menuTableView.delegate = self 
self.menuTableView.dataSource = self