Niestety UITableViewController posiada tableView jako widok z góry poziomu. Oczywiście, jeśli spojrzysz w widoku debuggera, zobaczysz, że widok tabeli nie jest widokiem głównym. Dzięki temu programowo można dodawać przyciski do okna tableView. Jeśli musisz to zrobić po fakcie, jest to prawdopodobnie najłatwiejszy sposób dodania elementu najwyższego poziomu do kontrolera UITableViewController. W przeciwnym razie, jeśli robisz to w pierwotnym projekcie, możesz użyć widoku kontenera dla swoich przycisków i kontrolki UITableViewController dla TableView. Minusem tego podejścia jest to, że otrzymujesz dwa kontrolery widoku, jeden dla kontenera i jeden dla tabeli, i często jest to konieczne, aby przekazać informacje z powrotem i między nimi. Jeśli używasz szybkiego, możesz to uprościć, zagnieżdżając tableViewcontroller wewnątrz klasy kontrolera widoku kontenera.
Jeśli chcesz dodać przycisk do okna, możesz to zrobić leniwie, gdy masz pewność, że widok ma okno. Zauważ, że przyciski należą do okna, a nie do kontrolera widoku, więc masz obowiązek usunąć je, gdy zniknie kontroler widoku.
private weak var button: UIButton!
...
override func didMove(toParentViewController parent: UIViewController?) {
super.didMove(toParentViewController: parent)
guard self.button == nil, let window = tableView.window else {
return
}
let button = UIButton(frame: CGRect(x:0, y:40, width: 200, height: 20))
button.setTitle("This is a red button", for: .normal)
button.backgroundColor = UIColor.red
window.addSubview(button)
self.button = button
}
override func viewWillDisappear(_ animated: Bool) {
super.viewWillDisappear(animated)
button?.removeFromSuperview()
}
nie sądzę, że będzie działać, bo Muszę użyć znacznika uitableview, ponieważ potrzebuję komórek statycznych i nie można zmienić jego wysokości za pomocą tableviewcontroller. – zach
Możesz użyć zwykłego kontrolera UIViewController lub UINavigationController i samemu dodać widok tabeli. To sprawia, że jest o wiele bardziej elastyczny. – pranjalsatija
To podejście, które stosuję we wszystkich moich aplikacjach. Używam UIViewController i dodam widok tabeli jako widok subview, więc mogę zmienić jego rozmiar, jednak chciałbym. A jeśli chcesz używać statycznych komórek, nadal możesz. – pranjalsatija