从不调用Tableview方法

时间:2017-12-15 09:48:50

标签: ios swift uitableview

我有一个iOS应用程序,我在Interface Builder中的视图中添加了UITableView。然后我在UIViewController中设置了这样的tableview:

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 50
tableView.delegate = self
tableView.dataSource = self
tableView.contentInset = UIEdgeInsets(top: 25, left: 0, bottom: 0, right: 0)

我还实现了以下方法:

func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    print("test table")
    let course = self.courses[indexPath.row]
    let cell = tableView.dequeueReusableCell(withIdentifier: CourseTableViewCell.identifier, for: indexPath) as! CourseTableViewCell

    cell.make(course, location: self.currentLocation)

    return cell
}

func numberOfSections(in tableView: UITableView) -> Int {
    return 1
}

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

但是,从不调用这些方法,没有显示表视图,我的控制台中没有错误?在尝试添加此内容时是否有一些错过的内容?

感谢。

根据评论中的要求:

  • courses数组不为空
  • courses
  • 之前填充了reloadData()数组

3 个答案:

答案 0 :(得分:4)

尝试使用此代替代码:

@IBOutlet weak var tableView: UITableView!{
    didSet {
        self.tableView.delegate = self
        self.tableView.dataSource = self
    }
}

确保您的控制器符合两个协议:UITableViewDelegateUITableViewDataSource

然后添加此方法以确保您的单元格没有0点高度:

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return 80 // adjust height of row as needed 
}

答案 1 :(得分:1)

尝试实现" heightForRowAtIndexPath" 我认为您的表已正确重新加载,但由于单元格中的限制 UITableViewAutomaticDimension无法正常工作。 2 - 确保课程分配正确,使用numberOfRowsAtIndexPath中的调试器检查课程中的项目

答案 2 :(得分:0)

您应该通过在numberOfSections或numberOfRowsInSection等方法中设置断点来测试是否执行委托方法。

当断点没有被击中时,代表设置不正确。