ios vers Masquer la ligne de séparation remove si UITableViewCells sont vides




transferer photo iphone vers pc sans itunes (14)

Je suppose que c'est ce que vous cherchez.

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

Cette question a déjà une réponse ici:

J'ai un UITableView et j'ai seulement 3 lignes dedans, et je peux voir ces 3 rangées. Le problème est les cellules qui sont vides: je peux voir des lignes là. Je ne veux pas voir ces lignes.

Une idée de comment supprimer ces lignes?

Ci-dessous est l'image pour ce que je cherche.


Dans la celluleForRowAtIndexPath

let separatorLineView:UIView = UIView(frame: CGRectMake(0,0,self.tableview.bounds.width,0.5))
separatorLineView.backgroundColor = tableView.separatorColor
cell!.contentView.addSubview(separatorLineView)

self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

Vous pouvez utiliser

tableForBrands.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];

Cela a fonctionné pour moi ...


S'il vous plaît essayez le code suivant:

self.tblView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
if ([self.tblView respondsToSelector:@selector(setSeparatorInset:)])
{
    [self.tblView setSeparatorInset:UIEdgeInsetsZero];
}
// write in view did load

Encore plus simple que la réponse d'Andrey Z: Il suffit de créer un faux tableFooterView dans votre classe UITableView:

self.tableFooterView = [UIView new]; // to hide empty cells

et Swift:

tableFooterView = UIView()


Vous pouvez masquer la ligne de séparation standard de UITableView en utilisant l'un des extraits de code ci-dessous. Le moyen le plus simple d'ajouter un séparateur personnalisé est d'ajouter un simple UIView de 1px height:

UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)];
separatorLineView.backgroundColor = [UIColor clearColor]; // set color as you want.
[cell.contentView addSubview:separatorLineView];

OU

    self.tblView=[[UITableView alloc] initWithFrame:CGRectMake(0,0,320,370) style:UITableViewStylePlain];
    self.tblView.delegate=self;
    self.tblView.dataSource=self;
    [self.view addSubview:self.tblView];

    UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
    v.backgroundColor = [UIColor clearColor];
    [self.tblView setTableHeaderView:v];
    [self.tblView setTableFooterView:v];
    [v release];

OU

- (float)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
    // This will create a "invisible" footer
    return 0.01f;
}

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
    // To "clear" the footer view
    return [[UIView new] autorelease];
}

OU

Et vérifiez également la réponse de nickfalk , c'est très court et utile aussi. Et vous devriez aussi essayer cette ligne unique,

self.tableView.tableFooterView = [[UIView alloc] init];

Pas sûr mais ça marche dans toutes les versions d'iOS que j'ai cochées, avec iOS 5 et plus tard, jusqu'à iOS 7.


Solution rapide: tableView.tableFooterView = UIView (cadre: CGRectZero)

A travaillé sur Xcode 7.2


Le UIView() retour d'un UIView() vide dans viewForFooterInSection fonctionné pour moi:

override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
        return UIView()
    }

Si vous utilisez Storyboards, vous pouvez simplement glisser et déposer un UIView dans votre UITableView sous vos cellules et définir sa hauteur à 0. (Avoir seulement testé dans un projet iOS 8)


Certaines des suggestions précédentes contiennent une erreur conceptuelle BIG:

si tu fais:

[cellule addSubview: ....

même si une cellule est "réutilisée", vous allez ajouter une nouvelle sous-vue pour le diviseur!

évitez-le de deux façons:

a) utiliser un TAG, et: 1) demander une sous-vue pour cette balise let divider = cell.viewWithTag (TAG) ... 2) si elle est présente, NE PAS ajouter une autre sous-vue 3) si PAS présente ajouter AND tag.

b) créez une vue personnalisée et ajoutez votre diviseur personnalisé dans "init" "awakeFromNib" de la cellule personnalisée.

code pour a):

 if let divider = cell.viewWithTag(DIVIDER_TAG) as? UIView{
            // nothing.. eventually change color bases in IndexPath...
        }else{
            let frame = CGRectMake(0, cell.frame.height-1, cell.frame.width, 1)
            divider.tag = DIVIDER_TAG
            divider.backgroundColor = UIColor.redColor()
            cell.addSubview(divider)
        }

Aucune des réponses suggérées ne convenait à mon problème similaire. L'implémentation de cette méthode dans tableView delegate a finalement fonctionné:

- (void)tableView:(UITableView *)tableView
  willDisplayCell:(UITableViewCell *)cell
forRowAtIndexPath:(NSIndexPath *)indexPath
{
    tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
}

Réponse mise à jour pour swift et iOS 9. Cela fonctionne pour les vues de table de la variété .Plain .

 tableView.tableFooterView = UIView()

Vous pouvez définir la vue de tableau à grouper au lieu de plain - ceci change l'aspect un peu mais enlève au moins les lignes supplémentaires.

J'ai eu ce problème exact et j'ai fini par changer pour des vues groupées. Ça a l'air beaucoup mieux.







cocoa-touch