771 Stimmen

Zusätzliche Trennzeichen unter UITableView beseitigen

Wenn ich eine Tabellenansicht mit 4 Zeilen einrichte, gibt es immer noch zusätzliche Trennlinien (oder zusätzliche leere Zellen) unter den gefüllten Zeilen.

Wie würde ich diese Zellen entfernen?

image for extra separator lines in UITableView

1566voto

J. Costa Punkte 7243

Schnittstellenerstellung (iOS 9+)

Ziehen Sie einfach eine UIView auf die Tabelle. Im Storyboard wird sie oben unter Ihren benutzerdefinierten Zellen angezeigt. Vielleicht möchten Sie es "Fußzeile" nennen.

Hier ist es zur Verdeutlichung in grün dargestellt, Sie würden wahrscheinlich eine klare Farbe wünschen.

Beachten Sie, dass Sie durch die Einstellung der Höhe beeinflussen können, wie der "Bodenaufprall" des Tisches behandelt wird. (Die Höhe Null ist normalerweise in Ordnung).

enter image description here


Um es programmatisch zu tun:

Schnell

override func viewDidLoad() {
    super.viewDidLoad()
    self.tableView.tableFooterView = UIView()
}

Objektiv-C

iOS 6.1+

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

Historisch gesehen in iOS:

Dem Tabellenview-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];
}

0 Stimmen

Ich glaube, Ihre Beschreibungen und Ihr Code sind vertauscht. Wie auch immer, das funktionierte großartig für mich. Ich verwende nur "echte" Fußzeilen mit gruppierten Tabellen, also habe ich if (tableView.style != UITableViewStyleGrouped) { } um Ihren Code herum hinzugefügt. Jetzt verlieren alle meine nicht gruppierten Tabellen ihre zusätzlichen Zellen, während meine gruppierten Tabellen davon unberührt bleiben.

0 Stimmen

In Anlehnung an meine obige Anmerkung füge ich eine Warnung hinzu, die besagt, dass, wenn Sie Bedingungen in die viewForFooterInSection-Methode eingeben, Sie sicherstellen müssen, dass die Methode entweder eine UIView oder null zurückgibt. Wenn Sie versehentlich void zurückgeben, wird Ihre App abstürzen!

4 Stimmen

@Mathieu Dies funktioniert, weil, wenn die Tabelle eine benutzerdefinierte Fußzeile hat, wird es nicht "fantom" Zeilen erstellen, um die tableview zu füllen. Erstellen Sie also eine leere Ansicht, die als Fußzeile verwendet wird, und setzen Sie die Höhe auf fast 0 (sie kann nicht Null sein, da iOS sie sonst nicht rendert). Mit diesem einfachen Trick werden Sie das Standardverhalten ändern.

130voto

wkw Punkte 3882

Hier ist eine andere Möglichkeit, das ohne die gruppierte Tabelle zu tun, und eine, die Sie wahrscheinlich nicht erraten würden. Hinzufügen von eine Kopfzeile und Fußzeile der Tabelle (vielleicht reicht das eine oder das andere, ich habe es nicht überprüft) bewirkt, dass die Trennzeichen in den Füll-/Leerzeilen verschwinden.

Ich bin darüber gestolpert, weil ich ein wenig Platz am oberen und unteren Rand von Tabellen haben wollte, um die Gefahr zu verringern, dass man mit den Fingern auf Schaltflächen statt auf eine Tabellenzelle drückt. Hier ist eine Methode, um eine leere Ansicht als Kopf- und Fußzeile einzufügen. Verwenden Sie eine beliebige Höhe, und Sie sparen sich die zusätzlichen Trennlinien.

- (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 ging ich zurück zum Code in meiner App ("AcmeLists" List Manager im iTunes Store...) und schloss die addHeaderAndFooter-Methode kurz, um sie zu überprüfen. Ohne sie Ich habe die zusätzlichen Zeilentrennzeichen; mit dem Code habe ich das, was Sie in diesem Fenster sehen: keine Tabellenzeilentrennzeichen Bild . Ich bin mir also nicht sicher, warum es bei Ihnen nicht funktioniert hat. Außerdem erscheint es mir sinnvoll, dass eine benutzerdefinierte Fußzeile in einer Tabellenansicht notwendigerweise die Zeilentrenner für leere Zeilen darunter nicht mehr zeichnen muss. Das wäre hässlich. Als Referenz habe ich mir Tabellen angesehen, die mehr Zeilen enthielten, als auf dem Bildschirm angezeigt werden konnten, und dann eine Tabelle mit zwei Zeilen. In beiden Fällen gab es keine überflüssigen Trennlinien.

Vielleicht wurden Ihre benutzerdefinierten Ansichten nicht hinzugefügt. Um das zu überprüfen, setzen Sie die Hintergrundfarbe auf etwas anderes als clearColor , z.B., [UIColor redColor] . Wenn Sie am unteren Rand der Tabelle keine roten Balken sehen, wurde Ihre Fußzeile nicht eingestellt.

1 Stimmen

Sie können dies auch im IB tun. Ziehen Sie einfach eine UIView an den unteren Rand der TableView und setzen Sie die Höhe auf 1.

76voto

dineshthamburu Punkte 1131

Entfernen von zusätzlichen Trennlinien für leere Zeilen in UITableView in Schnell

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    self.yourTableview.tableFooterView = UIView()
}

35voto

Guntis Treulands Punkte 4725

Ich möchte verlängern wkw Antwort:

Fügen Sie einfach nur eine Fußzeile mit der Höhe 0 hinzu, und der Trick ist erledigt. (getestet mit sdk 4.2, 4.4.1)

- (void) addFooter
{
    UIView *v = [[UIView alloc] initWithFrame:CGRectZero];

    [self.myTableView setTableFooterView:v];
}

oder noch einfacher - fügen Sie dort, wo Sie Ihren Tableview einrichten, diese Zeile ein:

//change height value if extra space is needed at the bottom.
[_tableView setTableFooterView:[[UIView alloc] initWithFrame:CGRectMake(0,0,0,0)]];

oder - was noch einfacher ist - einfach alle Trennzeichen entfernen:

[_tableView setTableFooterView:[UIView new]];

Dank an wkw wieder :)

0 Stimmen

Dies ist die richtige Antwort, denn bei anderen Methoden bleibt die letzte Zeile ohne Zeilentrenner.

23voto

Kyle Clegg Punkte 37388

Für iOS 7+ mit Storyboards

Ziehen Sie einfach eine UIView in Ihr UITableView als Fußzeile. Setzen Sie die Höhe der Fußzeilenansicht auf 0.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X