UITableView.sizeToFit()仅导致第一个单元格被渲染

时间:2017-01-08 19:28:08

标签: ios swift uitableview uiscrollview reloaddata

我有一个标准的UITableView,定义如此

self.productTable = UITableView(frame: CGRect(x:0, y:0, width: productsView.bounds.width, height: productsView.bounds.height), style: UITableViewStyle.plain)

    self.productTable.delegate = self
    self.productTable.dataSource = self
    self.productTable.isScrollEnabled = false

    self.productTable.register(UITableViewCell.self, forCellReuseIdentifier: "cell")

我在UIScrollView中有这个,因此我也禁用了滚动。当我通过一些新数据时,我会执行以下操作

self.productTable.reloadData()
self.productTable.sizeToFit()

执行此操作时,我的cellForRowAt indexPath函数只被调用一次,导致只渲染一个单元格。

如果我删除sizeToFit调用,则输出所有行都没有问题。

为什么这是行为?我以为reloadData是同步的?

由于

1 个答案:

答案 0 :(得分:1)

重新加载数据后,尝试下面的代码而不是'sizeToFit',

    CGRect newFrame = self.yourTableView.frame;
    newFrame.size.height = self.yourTableView.contentSize.height;
    self.yourTableView.frame = newFrame;

你应该在主线程上执行此操作!