wake-up-neo.com

Entferne Trennlinienzeile, wenn UITableViewCells leer ist

Ich habe eine UITableView und ich habe nur 3 Zeilen und ich kann diese 3 Zeilen sehen. Das Problem sind die Zellen, die leer sind: Ich kann dort Zeilen sehen. Ich möchte diese Zeilen nicht sehen.

Irgendeine Idee, wie man diese Zeilen entfernt?

Unten finden Sie ein Bild für das, was ich suche.

Image Link

83
Fahim Parkar

Sie können die Standardseparatorlinie von UITableView ausblenden, indem Sie einen der folgenden Code-Ausschnitte verwenden .. Die einfachste Möglichkeit, ein benutzerdefiniertes Separator hinzuzufügen, ist das Hinzufügen einer einfachen UIView von 1px Höhe:

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

ODER

    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];

ODER

- (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];
}

ODER

Und auch die Antwort von nickfalk , sie ist sehr kurz und hilfreich .. Und du solltest auch diese einzelne Zeile ausprobieren.

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

Nicht sicher, aber es funktioniert in allen iOS-Versionen, die ich mit iOS 5 und höher bis iOS 7 überprüft habe.

88
iPatel

Noch einfacher als die Antwort von Andrey Z: Machen Sie einfach eine falsche tableFooterView in Ihrer UITableView-Klasse:

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

und Swift:

tableFooterView = UIView()

146

Transparente UIView als tableView-Fußzeile mit 1px Höhe wird den Trick ausführen.

UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, 1)];
v.backgroundColor = [UIColor clearColor];
[self.tableView setTableFooterView:v];
7
Andrey Zverev

Antwort für Swift & iOS 9 aktualisiert. Dies funktioniert für Tabellenansichten der Sorte .Plain.

 tableView.tableFooterView = UIView()
7
seo
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
6
Robert Varga

Verwenden Sie diesen Code, um die Trennlinie für leere Zellen zu entfernen.

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

- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
     return [UIView new];

    // If you are not using ARC:
    // return [[UIView new] autorelease];
}   
3
Pradhyuman sinh

Die Rückgabe einer leeren UIView() in viewForFooterInSection hat für mich funktioniert:

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

Bitte versuchen Sie den folgenden Code:

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

Sie können verwenden

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

Es hat für mich funktioniert ...

1
Mak083

Einige der vorherigen Vorschläge enthalten einen großen konzeptionellen Fehler:

wenn Sie tun:

[Zelle addSubview: ....

selbst wenn eine Zelle "wiederverwendet" wird, fügen Sie eine neue Unteransicht für den Teiler hinzu!

vermeiden Sie es auf zwei Arten:

a) Verwenden Sie einen TAG und: 1) Fordern Sie eine Unteransicht für dieses Tag an let divider = cell.viewWithTag (TAG) ... 2) Falls vorhanden, fügen Sie NICHT eine weitere Unteransicht hinzu 3) Falls nicht vorhanden, fügen Sie das Tag hinzu.

b) Erstellen Sie eine benutzerdefinierte Ansicht und fügen Sie Ihren benutzerdefinierten Teiler in "init" "awakeFromNib" der benutzerdefinierten Zelle hinzu.

code für 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)
        }
0
ingconti

Wenn Sie Storyboards verwenden, können Sie eine UIView einfach in Ihre UITableView unter Ihre Zellen ziehen und ablegen und deren Höhe auf 0 setzen.

0
Matoz

Innerhalb des cellForRowAtIndexPath

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

Keine der vorgeschlagenen Antworten war für mein ähnliches Problem geeignet. Die Implementierung dieser Methode in tableView-Delegaten hat schließlich funktioniert:

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

Sie können die Tabellensicht so einrichten, dass sie gruppiert wird, anstatt sie als einfach zu definieren. Dadurch wird das Aussehen ein wenig geändert, mindestens jedoch die zusätzlichen Zeilen entfernt.

Ich hatte genau dieses Problem und wechselte schließlich zu gruppierten Ansichten. Sieht viel besser aus.

0
nickdnk

Schnelle Lösung: TableView.tableFooterView = UIView (Frame: CGRectZero)

Arbeitete mit Xcode 7.2

0

Ich denke, das ist, wonach Sie suchen.

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