Verankere eine UIB-Schaltfläche am Ende der Ansicht eines UITableViewControllers

9

Ich habe die folgende Anforderung. Wenn eine UITableViewController -Ansicht angezeigt wird, gibt es eine variable Anzahl von Zeilen. Unterhalb der Zeilen sollte eine Schaltfläche angezeigt werden.

Wenn die Anzahl der Zeilen klein ist, sollte die Schaltfläche am unteren Rand der Ansicht verankert werden.

Wenn die Anzahl der Zeilen größer ist, sollte die Löschschaltfläche unmittelbar nach der letzten Zeile platziert werden.

Mit anderen Worten:

Und nicht:

Mein bisher bestmöglicher Versuch bestand darin, tableFooterView zu setzen und zu versuchen, seine Höhe mit contentSize von UITableView zu aktualisieren, aber ich stoße auf alle möglichen Probleme. Ich könnte diesen Weg fortsetzen und um Hilfe bitten, aber zuerst möchte ich wissen, ob jemand alternative (bessere) Lösungen hat.

Das Ergebnis muss gut mit einer Statusleiste doppelter Größe (z. B. während eines Anrufs) funktionieren, und ich bin auf iOS 6.0 ausgerichtet. Ich verwende keinen Interface Builder.

    
Ben Packard 14.10.2012, 18:42
quelle

2 Antworten

1

Eine mögliche Lösung, um diesen Effekt zu erzielen, könnte sein, zwei verschiedene Lösungen zu verwenden.

  1. Wenn die Anzahl der Zeilen bedeutet, dass die Schaltfläche nicht auf dem Bildschirm angezeigt wird, verwenden Sie die Fußzeilenansicht so, wie Sie es gemacht haben.

  2. Wenn die Anzahl der Zeilen bedeutet, dass die Schaltfläche nicht auf dem Bildschirm angezeigt wird,

    1. Fügen Sie die Schaltfläche zur tableView
    2. hinzu
    3. Implementieren Sie - (void)scrollViewDidScroll:(UIScrollView *)scrollView und aktualisieren Sie den Rahmen der Schaltfläche so, dass sie von unten nach oben verschoben wird.

Der Offset von unten kann einer Logik wie dieser folgen

  1. yOffset = CGRectGetHeight (tableView.frame) - (CGRectGetHeight (button.frame) + somePadding)
  2. yOffset + = tableView.contentOffset.y

Dies würde bedeuten, dass sich die Schaltfläche beim Scrollen immer noch nach oben und unten bewegt, aber Sie müssen sich nicht mit der footerView-Höhe anlegen

    
Paul.s 14.10.2012 19:43
quelle
0

Behalten Sie sowohl die Tabellenansicht als auch eine Schaltfläche in der Bildlaufansicht. Behalten Sie die Schaltfläche am unteren Rand der Bildschirmansicht. Für ein ordnungsgemäßes Scrollen zur Arbeit möchten Sie möglicherweise die Eigenschaft scrollEnabled der Bildlaufansichten festlegen. Für weitere Details überprüfen Sie dies

Scrollen eines UITableView in einem UIScrollView

BEARBEITEN:

yourView.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;

Überprüfen Sie die akzeptierte Antwort für diese Frage, um weitere Details zur Implementierung von Streben und Federn mit Code zu erhalten: UIView autoresizingMask - Interface Builder für Code - Erstellen Sie programmatisch Streben und Federn - Schnell oder Ziel-C

    
Rakesh 14.10.2012 19:01
quelle