UITableView tableFooterView not showing

I have a UITableView to which I am adding tableFooterView , for some reason tableFooterView does not appear?

How do I add my tableFooterView

I add tableFooterView to the connectionDidFinishLoading method after reloading the tableview data.

So what i do

 [controls reloadData]; UIView *myFooterView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 100)]; if(self.item.canRunOnDemand) { UIButton *buttonRunWorkflow = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [buttonRunWorkflow addTarget:self action:@selector(runWorkflow:) forControlEvents:UIControlEventTouchDown]; [buttonRunWorkflow setTitle:@"Run Now" forState:UIControlStateNormal]; buttonRunWorkflow.frame = CGRectMake(15, 5, 290, 44); buttonRunWorkflow.backgroundColor = [UIColor clearColor]; [buttonRunWorkflow setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [myFooterView addSubview:buttonRunWorkflow]; } if(item.canRunAlways) { UILabel *canRunAlwaysLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 46, 100, 44)]; canRunAlwaysLabel.backgroundColor = [UIColor clearColor]; canRunAlwaysLabel.text = @"Run Always:"; UISwitch *canRunAlways = [[UISwitch alloc] initWithFrame:CGRectMake(115, 56, 100, 44)]; [canRunAlways addTarget:self action:@selector(canRunAlwaysChanged:) forControlEvents:UIControlEventValueChanged]; [myFooterView addSubview:canRunAlways]; [myFooterView addSubview:canRunAlwaysLabel]; [canRunAlwaysLabel release]; [canRunAlways release]; } [myFooterView release]; [controls.tableFooterView addSubview:myFooterView]; 

Footer height

 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { return 100; } 

I also tried this:

 - (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { if(section == [[fields objectAtIndex:section] count] - 1) { return 100; } else { return 0; } } -(UIView*) tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { if(section == [[fields objectAtIndex:section] count] - 1) { UIView *myFooterView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 80)]; if(self.item.canRunOnDemand) { UIButton *buttonRunWorkflow = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [buttonRunWorkflow addTarget:self action:@selector(runWorkflow:) forControlEvents:UIControlEventTouchDown]; [buttonRunWorkflow setTitle:@"Run Now" forState:UIControlStateNormal]; buttonRunWorkflow.frame = CGRectMake(15, 5, 290, 44); buttonRunWorkflow.backgroundColor = [UIColor clearColor]; [buttonRunWorkflow setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; [myFooterView addSubview:buttonRunWorkflow]; } if(item.canRunAlways) { UILabel *canRunAlwaysLabel = [[UILabel alloc] initWithFrame:CGRectMake(15, 46, 100, 44)]; canRunAlwaysLabel.backgroundColor = [UIColor clearColor]; canRunAlwaysLabel.text = @"Run Always:"; UISwitch *canRunAlways = [[UISwitch alloc] initWithFrame:CGRectMake(115, 56, 100, 44)]; [canRunAlways addTarget:self action:@selector(canRunAlwaysChanged:) forControlEvents:UIControlEventValueChanged]; [myFooterView addSubview:canRunAlways]; [myFooterView addSubview:canRunAlwaysLabel]; [canRunAlwaysLabel release]; [canRunAlways release]; } return myFooterView; } else { return nil; } } 
+4
source share
2 answers

Looking at the header file UITableView.h , we see the declaration of the tableFooterView property as follows:

 @property(nonatomic,retain) UIView *tableFooterView; // accessory view below content. default is nil. not to be confused with section footer 

therefore, the default value of property is nil . Therefore, you cannot add another UIView to nil UIView . You should do something like this:

 controls.tableFooterView = myFooterView; 
+7
source

Are you trying to add a footer as a table? If you are trying to accomplish this, execute this footer in this method

 - (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section 

It can help you. Thanks!

-3
source

Source: https://habr.com/ru/post/1401763/


All Articles