J'ai tableview dans un viewcontroller. J'ai une section dans cela. Je veux ajouter un bouton en pied de page. J'ai écrit ce code mais la vue pied de page ne s'affiche pas.
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
UIView *footerView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 40)];
UIButton *addcharity=[UIButton buttonWithType:UIButtonTypeCustom];
[addcharity setTitle:@"Add to other" forState:UIControlStateNormal];
[addcharity addTarget:self action:@selector(addCharity:) forControlEvents:UIControlEventTouchUpInside];
addcharity.frame=CGRectMake(0, 0, 40, 30);
[footerView addSubview:addcharity];
return footerView;
}
J'ai également défini la hauteur du pied de page 100 dans sa méthode de délégation.
captures d'écran: Au départ, j'ai 3 données. Mais lorsque je recherche des données particulières et que le résultat est affiché sous forme de tableau, à ce moment-là, je n'ai qu'une donnée, donc à ce moment-là l'emplacement du pied de page a changé. Je veux fixer le pied de page à la place initiale.
Modifier:
Une solution alternative consiste à ajouter un bouton en ajoutant une cellule supplémentaire à la fin.
Per Les documents d'Apple vous devez implémentez également la méthode heightForFooterInSection
, sinon votre viewForFooterInSection
ne ferait rien.
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 100.0f;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
if(tableView == myListTableview) //Here you can make decision
{
UIView *footerView=[[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 40)];
UIButton *addcharity=[UIButton buttonWithType:UIButtonTypeCustom];
[addcharity setTitle:@"Add to other" forState:UIControlStateNormal];
[addcharity addTarget:self action:@selector(addCharity:) forControlEvents:UIControlEventTouchUpInside];
[addcharity setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; //Set the color this is may be different for iOS 7
addcharity.frame=CGRectMake(0, 0, 130, 30); //Set some large width for your title
[footerView addSubview:addcharity];
return footerView;
}
}
- (void)addCharity:(id)sender
{
NSLog(@"add to charity");
}
Même code dans Swift
func tableView(tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return 100.0
}
func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
let footerView = UIView(frame:CGRectMake(0,0,320,40))
let loginButton = UIButton(type: .Custom)
loginButton.setTitle("LOGIN", forState: .Normal)
loginButton.addTarget(self, action: "loginAction", forControlEvents: .TouchUpInside)
loginButton.setTitleColor(UIColor.whiteColor(), forState: .Normal)
loginButton.backgroundColor = UIColor.blueColor()
loginButton.frame = CGRectMake(0, 0, 130, 30)
footerView.addSubview(loginButton)
return footerView
}
func loginAction()
{
print("Hello");
}
Soyez sûr de trois choses
1- Vous n'implémentez pas cette méthode
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
2- Cette méthode
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
Est une méthode UITableViewDelegate et non UITableViewDataSource, Vérifiez si le délégué de la vue table est défini avec le contrôleur
3- Assurez-vous que vous implémentez cette méthode
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section;
Enfin , Si tout est correct et ne fonctionne toujours pas, vous pouvez simplement ajouter la vue dans la propriété "tableFooterView" de la table pour être le pied de page de la table entière et pas seulement de la section.