In meinem UITableView
, das ich mit Storyboards eingerichtet habe, muss ich in der Lage sein, eine Symbolleiste hinzuzufügen, die am unteren Rand der Ansicht bleibt. Sie sollte nicht scrollen.
Im Gegensatz zu dieser Frage: LINK Ich glaube nicht, dass ich einer normalen Ansicht eine TableView-Unteransicht hinzufügen und dann programmgesteuert eine Symbolleiste hinzufügen kann, da ich dynamische Zellen verwende die sich viel einfacher über Storyboards integrieren lassen.
Das ist es, womit ich im Moment festgefahren bin ...
wenn Sie die Symbolleiste in einem Ansichts-Controller anzeigen möchten, der sich in einem Navigations-Controller befindet.
code:
- (void)viewWillAppear:(BOOL)animated
{
[self.navigationController setToolbarHidden:NO animated:YES];
}
- (void)viewWillDisappear:(BOOL)animated
{
[self.navigationController setToolbarHidden:YES animated:YES];
}
Für Swift Benutzer können Sie den folgenden Code verwenden:
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated);
self.navigationController?.setToolbarHidden(false, animated: animated)
}
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated);
self.navigationController?.setToolbarHidden(true, animated: animated)
}
Dieses Mittel funktioniert für (2016) iOS 9.2. Wir alle hassen es, wie Apple uns dazu bringt, Zeit mit Dingen zu verschwenden, die so einfach sein sollten. Ich mag schrittweise Lösungen für diese Art von albernen Problemen, also teile ich es mit Ihnen !:
Fügen Sie in der viewDidLoad () -Methode Ihres View-Controllers diesen Code vor allem anderen hinzu:
override func viewDidLoad(animated: Bool) {
self.navigationController?.setToolbarHidden(false, animated: true)
// der Rest des Codes}
Sie möchten nicht, dass diese Symbolleiste an einer anderen Stelle angezeigt wird. Fügen Sie dies in Ihre Ansicht ein, um sie auszublenden, sobald das aktuelle Fenster geschlossen wird:
-
override func viewWillDisappear(animated: Bool) {
super.viewWillDisappear(animated);
self.navigationController?.setToolbarHidden(true, animated: animated)
}
Voila!
Obwohl Sie UITableViewController nicht als Verknüpfungsklasse verwenden können, können Sie es in Schritt 4 mit einem regulären UIViewController verknüpfen.
In der Kopfzeile benötigen Sie jedoch etwas Ähnliches
@interface MyViewController : UIViewController <UITableViewDelegate, UITableViewDataSource>
In Ihrem Storyboard sieht es ungefähr so aus:
Ich habe einen Zwischen-View-Controller mit einer Container-Ansicht für die Tabelle verwendet. Fügen Sie die Symbolleistenansicht dem Intermediate hinzu und lassen Sie es so aussehen, wie Sie möchten (verwenden Sie UIButtons anstelle von UIBarButtonItem).
Wenn Sie dies tun, strecken Sie die Containeransicht bis zum oberen Rand des Bildschirms und nicht bis zum unteren Rand der Navigationsleiste. Andernfalls werden Sie sich die Haare aus dem Kopf ziehen und versuchen, die Bildlaufleisten richtig einzustellen.
Einige weitere Details in einer ähnlichen Frage https://stackoverflow.com/a/31878998/1042111