我无法弄清楚为什么我的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;
}
}
答案 0 :(得分:4)
您需要设置表视图的委托和数据源。您已包含UITableViewDataSource
和UITableViewDelegate
协议,但尚未在代码中为您的tableview分配委托和数据源。
在viewDidLoad
:
self.menuTableView.delegate = self
self.menuTableView.dataSource = self