2017-01-08 2 views
1

У меня есть стандартный UITableView, определяется как такUITableView.sizeToFit() вызывает только первая ячейка быть вынесено

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

После перезагрузки данные один раз попробовать ниже код вместо «sizeToFit»,

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

И вы должны выполнить это на главном потоке!

+0

Perfect !! Исправлена ​​некорректная работа синтаксиса. Странное поведение от sizeToFit. Благодаря! – mwild

+0

Добро пожаловать – Lion

Смежные вопросы