Wszystkie istniejące rozwiązania nie działają dla mnie na iOS 8, gdy nie ma wystarczającej liczby wierszy do wypełnienia tableView, ponieważ iOS dostosuje wstawkę automatycznie w tej sytuacji. (Istniejące odpowiedzi są dobre, gdy jest wystarczająco dużo wierszy)
Po zmarnowaniu 6 godzin na tę kwestię w końcu dostałem to rozwiązanie.
Krótko mówiąc, musisz wstawić puste komórki do tableView, jeśli nie ma wystarczającej liczby komórek, więc rozmiar zawartości tableView jest na tyle duży, że iOS nie dostosuje wstawki za Ciebie.
Oto, jak zrobiłem to w Swift:
1.) zadeklarować zmienną minimumCellNumjako właściwość klasy
var minimumCellNum: Int?
2.) Oblicz minimumCellNumi zestaw tableView.contentOffsetwviewWillAppear
let screenHeight = Int(UIScreen.mainScreen().bounds.height)
self.minimumCellNum = (screenHeight - 103 - heightOfOtherCustomView) / heightOfYourCell
self.tableView.contentOffset = CGPointMake(0, 44)
3.) w tableView(tableView: UITableView, numberOfRowsInSection section: Int))
let numOfYourRows = YOUR LOGIC
if numOfYourRows > minimumCellNum {
return numOfYourRows
} else {
return minimumCellNum!
}
4.) Zarejestruj pustą komórkę, której selectionatrybutem jest None, w serii ujęć i wtableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath)
if indexPath.row < numOfYourRows {
return YOUR CUSTOM CELL
} else {
let cell = tableView.dequeueReusableCellWithIdentifier("EmptyCell", forIndexPath: indexPath) as! UITableViewCell
return cell
}
5.) w tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
if tableView == self.tableView {
if numOfYourRows < (indexPath.row + 1) {
return
}
YOUR LOGIC OF SELECTING A CELL
}
To nie jest idealne rozwiązanie, ale jest to jedyne obejście, które naprawdę działa dla mnie na iOS 8. Chciałbym wiedzieć, czy istnieje lepsze rozwiązanie.