Wenn ich eine Tabellenansicht mit 4 Zeilen einrichte, befinden sich unter den gefüllten Zeilen noch zusätzliche Trennlinien (oder zusätzliche leere Zellen).
Wie würde ich diese Zellen entfernen?
Wenn ich eine Tabellenansicht mit 4 Zeilen einrichte, befinden sich unter den gefüllten Zeilen noch zusätzliche Trennlinien (oder zusätzliche leere Zellen).
Wie würde ich diese Zellen entfernen?
Antworten:
Ziehen Sie einfach eine UIView auf die Tabelle. Im Storyboard befindet es sich oben unter Ihren benutzerdefinierten Zellen. Sie können es vorziehen, es "Fußzeile" zu nennen.
Hier wird es aus Gründen der Klarheit grün angezeigt. Sie möchten wahrscheinlich eine klare Farbe.
Beachten Sie, dass Sie durch Anpassen der Höhe beeinflussen können, wie der "untere Sprung" der Tabelle nach Ihren Wünschen behandelt wird. (Höhe Null ist normalerweise in Ordnung).
So programmgesteuert:
override func viewDidLoad() {
super.viewDidLoad()
self.tableView.tableFooterView = UIView()
}
- (void)viewDidLoad
{
[super viewDidLoad];
// This will remove extra separators from tableview
self.tableView.tableFooterView = [UIView new];
}
oder wenn Sie es vorziehen,
self.tableView.tableFooterView = [[UIView alloc] initWithFrame:CGRectZero];
Zum Table View Controller hinzufügen ...
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section {
// This will create a "invisible" footer
return CGFLOAT_MIN;
}
und wenn nötig ...
- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section
{
return [UIView new];
// If you are not using ARC:
// return [[UIView new] autorelease];
}
tableFooterView
bleibt ein Trennzeichen in der letzten Zelle in der Zeile, da die Tabelle weiterhin Inhalte unterhalb dieser Zelle vorwegnimmt. Wenn Sie den historischen Weg verwenden, wird das letzte Trennzeichen entfernt und sieht insgesamt besser aus.
Hier ist eine andere Möglichkeit, dies ohne den gruppierten Tabellenstil zu tun, und eine, die Sie wahrscheinlich nicht erraten würden. Durch Hinzufügen einer Kopf- und Fußzeile zur Tabelle (möglicherweise reicht die eine oder andere aus, wurde nicht überprüft) werden die Trennzeichen aus den Füll- / Leerzeilen entfernt.
Ich bin darauf gestoßen, weil ich oben und unten auf den Tischen etwas Platz haben wollte, um das Risiko zu verringern, Knöpfe anstelle einer Tischzelle mit fleischigen Fingern zu drücken. Hier ist eine Methode, um eine leere Ansicht als Kopf- und Fußzeile einzufügen. Verwenden Sie eine beliebige Höhe, um die zusätzlichen Trennlinien zu entfernen.
- (void) addHeaderAndFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 10)];
v.backgroundColor = [UIColor clearColor];
[self.myTableView setTableHeaderView:v];
[self.myTableView setTableFooterView:v];
[v release];
}
Als Antwort auf @Casebash kehrte ich zum Code in meiner App zurück ("AcmeLists" -Listenmanager im iTunes Store ...) und schloss die Methode addHeaderAndFooter kurz, um dies zu überprüfen. Ohne es habe ich die zusätzlichen Zeilentrennzeichen; Mit dem Code habe ich, was Sie in diesem Fenster sehen, Snap: kein Bild mit Tabellenzeilentrennzeichen . Ich bin mir also nicht sicher, warum es bei Ihnen nicht funktioniert hätte. Darüber hinaus ist es für mich sinnvoll, dass für eine benutzerdefinierte Fußzeile in einer Tabellenansicht nicht mehr Zeilentrennzeichen für leere Zeilen darunter gezeichnet werden müssen. Das wäre schrecklich. Als Referenz habe ich mir Tabellen angesehen, in denen mehr Zeilen vorhanden waren, als auf dem Bildschirm angezeigt werden konnten, und dann eine Tabelle mit zwei Zeilen. In beiden Fällen keine Fremdabscheider.
Möglicherweise wurden Ihre benutzerdefinierten Ansichten nicht hinzugefügt. Um dies zu überprüfen, stellen Sie die Hintergrundfarbe auf etwas anderes als clearColor
z [UIColor redColor]
. Wenn Sie am unteren Rand der Tabelle keine roten Balken sehen, wurde Ihre Fußzeile nicht festgelegt.
Entfernen zusätzlicher Trennlinien für leere Zeilen in UITableView in Swift
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.yourTableview.tableFooterView = UIView()
}
Ich möchte die wkw- Antwort erweitern:
Das einfache Hinzufügen nur einer Fußzeile mit der Höhe 0 reicht aus. (getestet auf sdk 4.2, 4.4.1)
- (void) addFooter
{
UIView *v = [[UIView alloc] initWithFrame:CGRectZero];
[self.myTableView setTableFooterView:v];
}
oder noch einfacher - wo Sie Ihre Tabellenansicht einrichten, fügen Sie diese Zeile hinzu:
//change height value if extra space is needed at the bottom.
[_tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectMake(0,0,0,0)]];
oder noch einfacher - um Trennzeichen einfach zu entfernen:
[_tableView setTableFooterView:[UIView new]];
Nochmals vielen Dank an wkw :)
Ziehen UIView
Sie einfach ein in Ihre UITableView
als Fußzeile. Stellen Sie die Höhe der Fußzeilenansicht auf 0 ein.
Versuche dies. Es hat bei mir funktioniert:
- (void) viewDidLoad
{
[super viewDidLoad];
// Without ARC
//self.tableView.tableFooterView = [[[UIView alloc] init] autorelease];
// With ARC, tried on Xcode 5
self.tableView.tableFooterView = [UIView new];
}
Wenn Sie Swift verwenden, fügen Sie viewDidLoad des Controllers, der die Tabellenansicht verwaltet , den folgenden Code hinzu :
override func viewDidLoad() {
super.viewDidLoad()
//...
// Remove extra separators
tableView.tableFooterView = UIView()
}
Sie können am Ende einfach eine leere Fußzeile hinzufügen, dann werden die leeren Zellen ausgeblendet, aber es sieht auch ziemlich hässlich aus:
tableView.tableFooterView = UIView()
Es gibt einen besseren Ansatz: Fügen Sie am Ende der Tabellenansicht eine 1-Punkt-Linie hinzu, da die Fußzeile und die leeren Zellen ebenfalls nicht mehr angezeigt werden.
let footerView = UIView()
footerView.frame = CGRect(x: 0, y: 0, width: tableView.frame.size.width, height: 1)
footerView.backgroundColor = tableView.separatorColor
tableView.tableFooterView = footerView
Fügen Sie einfach diesen Code hinzu ( Swift ). .
tableView.tableFooterView = UIView()
Weiterentwicklung der Lösung von J. Costa: Sie können eine globale Änderung an der Tabelle vornehmen, indem Sie diese Codezeile einfügen:
[[UITableView appearance] setTableFooterView:[[UIView alloc] initWithFrame:CGRectZero]];
innerhalb der ersten möglichen Methode (normalerweise in AppDelegate
, in: application:didFinishLaunchingWithOptions:
Methode).
Ich weiß, dass diese Frage als Antwort akzeptiert wurde, aber ich habe hier verschiedene Möglichkeiten angegeben, wie die zusätzliche Trennlinie von ausgeblendet werden kann UITableView
.
Sie können die tableView
Standardtrennlinie ausblenden und Ihre benutzerdefinierte Linie oben in jede Zelle einfügen.
Aktualisieren:
Der einfachste Weg, ein benutzerdefiniertes Trennzeichen hinzuzufügen, besteht darin, ein einfaches UIView
Trennzeichen mit einer Höhe von 1 Pixel hinzuzufügen :
UIView* separatorLineView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 1)];
separatorLineView.backgroundColor = [UIColor grayColor]; /// may be here is clearColor;
[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 Der beste und einfachste Weg, den ich je mag, ist
self.tableView.tableFooterView = [[UIView alloc] init];
Probieren Sie eines aus.
Möglicherweise finden Sie viele Antworten auf diese Frage. Die meisten von ihnen befassen sich mit der Manipulation mit UITableView
dem tableFooterView
Attribut 'und dies ist der richtige Weg, um leere Zeilen auszublenden. Der Einfachheit halber habe ich eine einfache Erweiterung erstellt, mit der leere Zeilen in Interface Builder ein- und ausgeschaltet werden können. Sie können es aus dieser Hauptdatei auschecken . Ich hoffe, es könnte ein wenig Zeit sparen.
extension UITableView {
@IBInspectable
var isEmptyRowsHidden: Bool {
get {
return tableFooterView != nil
}
set {
if newValue {
tableFooterView = UIView(frame: .zero)
} else {
tableFooterView = nil
}
}
}
}
Verwendungszweck:
tableView.isEmptyRowsHidden = true
uitableview zusätzliche Trennlinie zusätzliche Trennlinien ausblenden in Swift 3.0 ausblenden
self.tbltableView.tableFooterView = UIView(frame: .zero)
Wenn Sie nach der letzten Zelle kein Trennzeichen mehr benötigen, benötigen Sie für Ihre Fußzeile eine Höhe nahe Null, jedoch nicht Null.
In Ihrem UITableViewDelegate
:
func tableView(_ tableView: UITableView, heightForFooterInSection section: Int) -> CGFloat {
return .leastNormalMagnitude
}
Swift funktioniert hervorragend mit:
tableView.tableFooterView = UIView()
Fügen Sie Ihrer tableViewCell einfach eine Ansicht mit der gewünschten Trennfarbe als Hintergrundfarbe, 100% Breite, 1 Pixel Höhe an der Position x0 y-1 hinzu. Stellen Sie sicher, dass die tableViewCell keine Unteransichten schneidet, sondern die tableView.
Sie erhalten also ein absolut einfaches und funktionierendes Trennzeichen nur zwischen vorhandenen Zellen ohne Hack pro Code oder IB.
Hinweis: Bei einem vertikalen Top-Bounce wird das 1. Trennzeichen angezeigt. Dies sollte jedoch kein Problem darstellen, da dies das Standardverhalten von iOS ist.
Um zusätzliche Trennzeilen programmgesteuert am unteren Rand von UItableview zu entfernen, schreiben Sie einfach die folgenden zwei Codezeilen auf, um zusätzliche Trennzeichen zu entfernen.
tableView.sectionFooterHeight = 0.f;
tableView.sectionHeaderHeight = 0.f;
Dieser Trick funktioniert die ganze Zeit für mich, versuchen Sie es selbst.
Ich hatte etwas Glück bei der Implementierung eines einzelnen Teils der akzeptierten Antwort (iOS 9+, Swift 2.2). Ich hatte versucht zu implementieren:
self.tableView.tableFooterView = UIView(frame: .zero)
Es gab jedoch keine Auswirkungen auf meine tableView
- ich glaube, es könnte etwas mit der Tatsache zu tun haben, dass ich verwendet habe UITableViewController
.
Stattdessen musste ich nur die viewForFooterInSection
Methode überschreiben (ich habe die nicht tableFooterView
anderswo festgelegt):
override func tableView(tableView: UITableView, viewForFooterInSection section: Int) -> UIView? {
return UIView(frame: .zero)
}
Dies funktionierte gut für einen tableView
einzelnen Abschnitt (wenn Sie mehrere Abschnitte haben, müssen Sie den letzten angeben).
Wenn Sie nur einen Abschnitt haben, können Sie am schnellsten und einfachsten den Tabellenansichtsstil von "Einfach" auf "Gruppiert" einstellen. (siehe Bild)
Wenn Sie mehr Abschnitte haben, müssen Sie möglicherweise die Headerhöhe auf Null setzen (abhängig vom Geschmack Ihres / Ihres Kunden / Ihres Projektmanagers).
Wenn Sie mehr Abschnitte haben und sich nicht mit den Überschriften herumschlagen möchten (auch wenn es im einfachsten Fall nur eine Zeile ist), müssen Sie eine UIView als Fußzeile festlegen, wie in den vorherigen Antworten erläutert.
Schnell und einfach Swift 4 Way.
override func viewDidLoad() {
tableView.tableFooterView = UIView(frame: .zero)
}
Wenn Sie statische Zellen haben. Sie können das Trennzeichen auch im Inspektorfenster deaktivieren. (Dies ist nicht wünschenswert, wenn Sie das Trennzeichen benötigen. Verwenden Sie in diesem Fall die oben gezeigte Methode.)
super.viewDidLoad()
) und ist in der Wiki-Antwort oben enthalten. Das Entfernen aller Trennzeichen ist nicht das, worum es bei dieser Frage geht. Setzen Sie also Ihre letzte Bearbeitung besser zurück und / oder löschen Sie Ihre Antwort vollständig.
Wenn Sie unerwünschten Speicherplatz in UITableview entfernen möchten, können Sie die folgenden zwei Methoden verwenden
- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section{
return 0.1;
}
- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section
{
return 0.1;
}
Ich habe diese kleine Tabellenansicht-Erweiterung hinzugefügt, die überall hilft
extension UITableView {
func removeExtraCells() {
tableFooterView = UIView(frame: .zero)
}
}
Versuchen Sie es damit
für Ziel C.
- (void)viewDidLoad
{
[super viewDidLoad];
// This will remove extra separators from tableview
self.yourTableView.tableFooterView = [UIView new];
}
für Swift
override func viewDidLoad() {
super.viewDidLoad()
self.yourTableView.tableFooterView = UIView()
}
Wenn Sie eine searchbar
in Ihrer haben view
(um beispielsweise die Anzahl der Ergebnisse zu begrenzen), müssen Sie in shouldReloadTableForSearchString
und auch Folgendes hinzufügenshouldReloadTableForSearchScope:
controller.searchResultsTable.footerView = [ [ UIView alloc ] initWithFrame:CGRectZero ];
In Swift (ich verwende 4.0) können Sie dies erreichen, indem Sie eine benutzerdefinierte UITableViewCell
Klasse und overriding
die setSelected
Methode erstellen . Dann das separator insets
alles auf 0 . (meine Hauptklasse mit der Tabellenansicht hat einen klaren Hintergrund) Farbe.
override func setSelected(_ selected: Bool, animated: Bool) {
super.setSelected(selected, animated: animated)
// eliminate extra separators below UITableView
self.separatorInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}