La propiedad tableFooterView no corrige el pie de página en la parte inferior de la vista de tabla

Estoy configurando una vista de pie de página en el método viewDidLoad:

UIView *fView = [[UIView alloc] initWithFrame:CGRectMake(0, 718, 239, 50)]; fView.backgroundColor =[UIColor yellowColor]; self.table.tableFooterView = fView; 

Lamentablemente, el pie de página no está dibujando en el especificado (x,y) especificado anteriormente, pero se adhiere a las celdas, por lo que si la vista de la tabla tiene 4 celdas, el pie de página se dibujará en la quinta celda.

Incluso probé el método de protocolo, tableView:viewForFooterInSection

 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{ UIView *fView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 239, 50)]; fView.backgroundColor =[UIColor yellowColor]; return fView; } 

el problema no se resuelve, estoy seguro de que la propiedad tableFooterView debería tener la vista del pie de página en la parte inferior de la vista de la tabla, pero no estoy seguro de qué es lo que me falta aquí. Gracias por adelantado.

Dado que su objective es tener un pie de página que se mantenga fijo en la parte inferior de la pantalla, y no se desplace con la tabla, entonces no puede usar un pie de página de vista de tabla. De hecho, ni siquiera puede usar un UITableViewController .

Debe implementar su controller de vista como UIViewController . Luego agrega su propia vista de tabla como una subvista. También agrega su pie de página como una subvista de la vista del controller de vista, no de la vista de tabla. Asegúrese de dimensionar la vista de la tabla para que su parte inferior esté en la parte superior de la vista del pie de página.

Deberá hacer que su controller de vista cumpla con los protocolos UITableViewDataSource y UITableViewDelegate y conectar todo para replicar la funcionalidad de UITableViewController .

Una vista de pie de página siempre se agregará al final del contenido.
Esto significa que un pie de página de sección se agregará debajo de las celdas de una sección, una vista del pie de tabla al final de todas las secciones, independientemente de la position que establezca en su vista.

Si desea agregar un contenido "estático", debería considerar agregar una vista fuera de la vista de tabla (supervisión), lo que no es posible si utiliza UITableViewController , o puede usar [self.table addSubView:view] y ajustar la vista posicionar / transformar a la propiedad contentOffset la vista de contentOffset en el método scrollViewDidScroll: delegate ( UITableView es una subclass de UIScrollView para que también obtenga sus llamadas de delegado) como en este código:

 @implementation YourTableViewController { __weak UIView *_staticView; } - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. UIView *staticView = [[UIView alloc] initWithFrame:CGRectMake(0, self.tableView.bounds.size.height-50, self.tableView.bounds.size.width, 50)]; staticView.backgroundColor = [UIColor networkingColor]; [self.tableView addSubview:staticView]; _staticView = staticView; self.tableView.contentInset = UIEdgeInsetsMake(0, 0, 50, 0); } - (void)scrollViewDidScroll:(UIScrollView *)scrollView { _staticView.transform = CGAffineTransformMakeTranslation(0, scrollView.contentOffset.y); } - (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath { // this is needed to prevent cells from being displayed above our static view [self.tableView bringSubviewToFront:_staticView]; } ... 

Otra forma es usar UITableViewController en un storyboard, e incrustarlo dentro de UIViewController como una vista de contenedor. A continuación, puede usar el layout automático para establecer la relación entre el pie de página y la vista del contenedor que contiene el UITableView

Si la vista de tabla o el controller de vista de tabla está envuelto por un controller de navigation, considere usar la barra de input UIToolbar del controller de navigation. Siempre se pegará a la parte inferior.

 [self.navigationController setToolbarHidden:NO]; 

Pude get una label que se fije en la parte inferior de mi UITableViewController estático. No es la solución perfecta para todos los escenarios, pero funcionó para mis necesidades simples.

 UIView* v = [[UIView alloc] initWithFrame:self.view.bounds]; CGFloat labelHeight = 30; CGFloat padding = 5; UILabel* l = [[UILabel alloc] initWithFrame:CGRectMake(0, v.frame.size.height - labelHeight - padding, self.view.frame.size.width, labelHeight)]; l.text = @"Hello World"; [v addSubview:l]; [self.tableView setBackgroundView:v]; 

La siguiente es la solución para este problema de pie de página, cuando NO queremos que el pie de página se pegue en el background todo el time, también. solo se adhiere a la parte inferior cuando no hay suficientes filas para llenar la pantalla, o cuando el usuario se desplaza por completo hacia abajo de la pantalla.

Agregue su self.footerView a su self.tableView como una subvista en -viewDidLoad: o en algún lugar similar, luego configure el delegado para self.tableView , actualice el recuadro de contenido de tableview a self.tableView.contentInset = UIEdgeInsetsMake(0, 0, CGRectGetHeight(self.footerView), 0); y configure los siguientes methods:

 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { [self updateFooterView]; } - (void)updateFooterView { CGRect sectionFrame = [self.tableView rectForSection:0]; CGFloat bottomSpace = self.tableView.contentOffset.y + CGRectGetHeight(self.tableView.frame) - CGRectGetMaxY(sectionFrame); CGFloat footerHeight = CGRectGetHeight(self.footerView.frame); CGFloat transformY = self.tableView.contentOffset.y + footerHeight - MIN(bottomSpace,footerHeight); CGRect footerFrame = self.footerView.frame; footerFrame.origin.y = self.tableView.bounds.size.height - footerFrame.size.height + transformY; self.footerView.frame = footerFrame; } 

Siempre que necesite actualizar el pie de página (es decir, después de agregar una nueva fila), simplemente llame -updateFooterView y debería estar bien

Puede usar esto para hacer que la tabla se vea más pequeña según cuántas filas tenga:

  let tblView = UIView(frame: CGRectZero) tableView.tableFooterView = tblView tableView.tableFooterView!.hidden = true tableView.backgroundColor = UIColor.clearColor() 

Otra alternativa sería simplemente cambiar la altura de la fila en la ruta del índice, dependiendo de para qué número de filas mínimas tiene ese problema.