2016-11-18 7 views
1

なぜ私のTableViewが表示されないのか分かりません。それはおそらく何かばかげているが、私のMenuItemStructのすべてが完全であり、nullではないと私のテーブルビューは私に正しく設定されているようだ。エラーはありませんが、私の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のコンセント参照は@IBOutlet weakのようにする必要があります。var menuTableView:UITableView!接続されていることを確認してください。 – Thahir

+1

tableViews Delegate&DataSourceを設定するのを忘れた – shallowThought

+1

'numberOfRowsInSection'が呼び出されているかどうか確認してください。もしそうでなければ、dataSourceとdelegateは 'UITableView'のために設定されていません。呼び出されている場合は、 'numberOfRowsInSection'は常に0を返す必要があります。 – Rikh

答えて

2

テーブルビューのデリゲートとデータソースを設定する必要があります。 UITableViewDataSourceUITableViewDelegateプロトコルは含まれていますが、コード内にテーブルビュー用のデリゲートとデータソースが割り当てられていません。

あなたviewDidLoadでこのような何か試してください:あなたがテーブルビューのデータソースとデリゲートを接続している場合

self.menuTableView.delegate = self 
self.menuTableView.dataSource = self 
関連する問題