web-dev-qa-db-fra.com

Masquer la vue de pied de page dans UITableView

Je travaille pour cacher la vue des pieds depuis un moment. Mon problème est que j'ai un bouton dans le pied de page lorsque je clique sur le bouton. Une section sera ajoutée ci-dessous en tant que dernière section. Le bouton bascule également vers la section nouvellement créée. Je souhaite maintenant masquer le pied de page dans la section précédente du tableau. après la mise à jour des sections.

footerView.hidden = YES

Je l'ai utilisé dans l'action du bouton mais cela ne fonctionne pas.

17
New Xcoder

Il y a quatre solutions. Elles sont,

Solution 1:

tableView.sectionHeaderHeight = 0.0;
tableView.sectionFooterHeight = 0.0;

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger )section {
    return 1.0;
}

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

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger )section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger )section {
    return [[UIView alloc] initWithFrame:CGRectZero];
}

Solution 2:

Vous pouvez définir la hauteur du pied de page/en-tête via le générateur d’interface sous l’onglet Taille.

Solution 3:

set contentInset propriété.

self.tableView.contentInset = UIEdgeInsetsMake(-20, 0, -20, 0);

Il est utilisé pour que le haut et le bas touchent le bord.

Solution 4:

mettre en œuvre ce qui suit, définir les valeurs selon votre condition. 0.0 ne sera pas accepté. La valeur la plus basse devrait être 1.0.

- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger )section {
    if(section == 0) {
       return 6;
    } else {
       return 1.0;
    }
}

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

- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger )section {
    return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger )section {
    return [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, 0)];
}
36
Shamsudheen TK

Cela devrait le faire

tableView.tableFooterView.hidden = YES;
14
shabbirv

Cela peut le faire En implémentant la méthode delegate

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
  return CGFLOAT_MIN;
}
7
J.Hong

Swift 3.0 solution qui supprime également la bordure embêtante de 1px entre la cellule précédente et l’en-tête suivant.

override func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return CGFloat.leastNormalMagnitude
}

override func tableView(_ tableView: UITableView, titleForFooterInSection section: Int) -> String? {
    return nil
}
2
Tim Newton

En vous référant à la réponse @ J.Hong, Swift4 version (iOS 11.3):

func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
    return .leastNonzeroMagnitude
}

En comparant à la réponse @Tim Newton:

  • il n'est pas nécessaire d'appeler titleForFooterInSection
  • simplifier CGFloat.leastNormalMagnitude -> .leastNonzeroMagnitude (plus Swifty IMO)
2

dans Swift4:

self.tableView.tableFooterView = nil
1
Mohamad.j

Lorsque vous n'utilisez pas de vues personnalisées, renvoyez nil de tableView:titleForFooterInSection: et 0 de tableView:heightForFooterInSection:.

@property(nonatomic, strong) NSString *footerTitle;
@property(nonatomic, assign) BOOL shouldHideFooter;
- (NSString *)tableView:(UITableView *)tableView titleForFooterInSection:(NSInteger)section
{
    return self.shouldHideFooter ? nil : self.footerTitle;
}

- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
    return self.shouldHideFooter ? 0 : UITableViewAutomaticDimension;
}
0
bteapot