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.
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.
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()
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];
Antwort für Swift & iOS 9 aktualisiert. Dies funktioniert für Tabellenansichten der Sorte .Plain
.
tableView.tableFooterView = UIView()
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
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];
}
Die Rückgabe einer leeren UIView()
in viewForFooterInSection
hat für mich funktioniert:
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView()
}
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
Sie können verwenden
tableForBrands.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
Es hat für mich funktioniert ...
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)
}
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.
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)
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;
}
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.
Schnelle Lösung: TableView.tableFooterView = UIView (Frame: CGRectZero)
Arbeitete mit Xcode 7.2
Ich denke, das ist, wonach Sie suchen.
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section{
return 1.0f;
}