Purtroppo UITableViewController ha una tableView come suo punto di vista di primo livello. Ovviamente se si guarda nella vista del debugger si può vedere che la tableview non è la vista radice. Pertanto è possibile aggiungere i pulsanti alla finestra di tableView in modo programmatico. Se devi farlo dopo il fatto, questo è probabilmente il modo più semplice per aggiungere un elemento di livello superiore su un UITableViewController. Altrimenti, se lo stai facendo nella progettazione iniziale, puoi utilizzare la visualizzazione contenitore per i pulsanti e un UITableViewController per TableView. Lo svantaggio di questo approccio è che si ottengono due controller di visualizzazione, uno per il contenitore e uno per il tavolo e spesso necessario per passare le informazioni indietro e tra di esse. Se si utilizza Swift, è possibile semplificare questo nidificando il TableViewcontroller all'interno della classe del controller della vista del contenitore.
Se si desidera aggiungere un pulsante alla finestra, è possibile farlo pigramente una volta verificato che la vista ha una finestra. Si noti che i pulsanti appartengono alla finestra e non al controller della vista, quindi è responsabilità dell'utente rimuoverli quando il controller della vista scompare.
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()
}
fonte
2016-10-12 23:43:11
non credo che funzionerà perché io è necessario utilizzare uitableviewcotroller perché ho bisogno di celle statiche e non è possibile modificarne l'altezza con un tableviewcontroller. – zach
È possibile utilizzare un normale UIViewController o un UINavigationController e aggiungere personalmente la vista tabella. Questo lo rende molto più flessibile. – pranjalsatija
Questo è l'approccio che prendo in tutte le mie app. Io uso un UIViewController e aggiungo la vista tabella come sottoview, quindi posso cambiare le sue dimensioni come vorrei. E se vuoi usare le celle statiche, puoi ancora. – pranjalsatija