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?
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).
Um es programmatisch zu tun:
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];
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];
}
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.
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!
@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.
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.
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 :)
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.