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ą minimumCellNum
jako właściwość klasy
var minimumCellNum: Int?
2.) Oblicz minimumCellNum
i zestaw tableView.contentOffset
wviewWillAppear
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 selection
atrybutem 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.