Je crée une vue sous forme de tableau dans laquelle il y a 10 sections, toutes ayant une vue en-tête mais pas de cellules. Donc, en bref, ma vue tableau affichera 10 vues d'en-tête seulement; il n'y aura pas de cellules dans aucune section. Maintenant, quand je fais cela, il y a un peu d'espace entre les vues d'en-tête de la section. Je veux supprimer cet espace. Est-ce possible? Pouvez-vous me donner un indice ou un moyen de contourner ce problème?
Voici les méthodes de source de données:
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 10;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
return 0;
}
-(UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section
{
UILabel * label = [[UILabel alloc] init];
label.backgroundColor = [UIColor grayColor];
return label;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
{
return 44.0f;
}
Voici la capture d'écran de la sortie:
J'ai une raison un peu complexe pour laquelle je le fais comme ça, que je ne pourrai pas expliquer par l'écriture. Tout ce que je veux, c'est ne pas avoir d'espacement dans les vues d'en-tête de la section. Merci d'avance.
Essaye ça..
self.tableView.rowHeight = 0; // in viewdidload
[self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleNone]; // in viewdidload
-(CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.01f;
}
-(CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return <your header height>;
}
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section{
return [[UIView alloc] initWithFrame:CGRectZero];
}
- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section{
return <your header view>;
}
Ayez également le séparateur de table comme aucun.
Si vous renvoyez 0
dans tableView:heightForFooterInSection:
, la valeur par défaut est renvoyée (probablement 10.0). C'est délicat, mais vous pouvez utiliser CGFLOAT_MIN
au lieu de 0
pour supprimer le pied de page.
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
Mise à jour:
Swift 3 :
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return CGFloat.leastNormalMagnitude
}
Essayez avec le code suivant
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.25; // as for you need
}
vous pouvez également gérer en suivant la méthode déléguée
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section
Est courte, vous pouvez le gérer par la méthode ci-dessus deux.
La tableview de style groupé a un pied de page par défaut, vous devez également personnaliser le pied de page pour le remplacer.
ou
essayez le style simple.
typedef enum {
UITableViewStylePlain,
UITableViewStyleGrouped
} UITableViewStyle;
Donc je ne peux pas voter mais je peux poster une réponse
La bonne réponse à cette façon en fait
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
return CGFLOAT_MIN;
}
Modifier le style d'affichage de la table de groupé à plaine. Cela a résolu mon problème.
Vous devez utiliser la méthode heightForHeaderInSection. Vous pouvez également le modifier en fonction des différentes sections, par exemple. dans certaines sections, vous devrez peut-être afficher plus de distance et sous certaines sections, vous ne souhaitez pas afficher de décalage Dans ce cas, vous pouvez utiliser CGFLOAT_MIN, qui est 0.000001f. En vous donnant un exemple, comment utiliser différentes sections avec différentes hauteurs d'en-tête
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { if (section == 0 || section == 2) { return 55.0; } else { return CGFLOAT_MIN; } }
J'espère que cela vous aidera.