Todas las soluciones existentes no funcionan para mí en iOS 8 cuando no hay suficientes filas para llenar el tableView ya que iOS ajustará el recuadro automáticamente en esta situación. (Sin embargo, las respuestas existentes son buenas cuando hay suficientes filas)
Después de perder como 6 horas en este tema, finalmente obtuve esta solución.
En resumen, debe insertar celdas vacías en tableView si no hay suficientes celdas, por lo que el tamaño del contenido de tableView es lo suficientemente grande como para que iOS no ajuste el recuadro por usted.
Así es como lo hice en Swift:
1.) declarar una variable minimumCellNum
como propiedad de clase
var minimumCellNum: Int?
2.) Calcular minimumCellNum
y un conjunto tableView.contentOffset
deviewWillAppear
let screenHeight = Int(UIScreen.mainScreen().bounds.height)
self.minimumCellNum = (screenHeight - 103 - heightOfOtherCustomView) / heightOfYourCell
self.tableView.contentOffset = CGPointMake(0, 44)
3 en tableView(tableView: UITableView, numberOfRowsInSection section: Int))
let numOfYourRows = YOUR LOGIC
if numOfYourRows > minimumCellNum {
return numOfYourRows
} else {
return minimumCellNum!
}
4.) Registre una celda vacía, cuyo selection
atributo es None
, en el guión gráfico y entableView(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.) en tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath)
if tableView == self.tableView {
if numOfYourRows < (indexPath.row + 1) {
return
}
YOUR LOGIC OF SELECTING A CELL
}
Esta no es una solución perfecta, pero es la única solución que realmente funciona para mí en iOS 8. Me gustaría saber si existe una solución más ordenada.