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.
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)];
}
Cela devrait le faire
tableView.tableFooterView.hidden = YES;
Cela peut le faire En implémentant la méthode delegate
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
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
}
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:
titleForFooterInSection
CGFloat.leastNormalMagnitude
-> .leastNonzeroMagnitude
(plus Swifty IMO)dans Swift4:
self.tableView.tableFooterView = nil
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;
}