Utilizzando Storyboard e Autolayout, ho un UIViewController con un UIScrollView come vista principale. Ho diverse viste del contenitore incorporate nella vista di scorrimento. Alcune di queste viste contenitore incorporate contengono UITableViews, ognuna con celle di diversa altezza. Avrò bisogno che l'altezza del TableView sia abbastanza grande da mostrare tutte le celle contemporaneamente, poiché lo scrolling sarà disabilitato sul TableView.Regolare l'altezza della vista del contenitore in modo che corrisponda a UITableView incorporato
Nel controllore UIView principale, l'altezza della vista del contenitore deve essere definita affinché la vista di scorrimento funzioni correttamente. Questo è problematico perché non c'è modo per me di sapere quanto sarà grande il mio tableView una volta che tutte le sue celle di altezze variabili avranno finito il rendering. Come posso regolare l'altezza della vista del contenitore in fase di runtime per adattarla al mio UITableView senza scorrimento?
Finora, ho fatto quanto segue:
// in embedded UITableViewController
//
- (void)viewDidLoad {
// force layout early so I can determine my table's height
[self.tableView layoutIfNeeded];
if (self.detailsDelegate) {
[self.detailsTableDelegate didDetermineHeightForDetailsTableView:self.tableView];
}
}
// in my main UIViewController
// I have an IBOutlet to a height constraint set up on my container view
// this initial height constraint is just temporary, and will be overridden
// once this delegate method is called
- (void)didDetermineHeightForDetailsTableView:(UITableView *)tableView
{
self.detailsContainerHeightConstraint.constant = tableView.contentSize.height;
}
Questo sta lavorando bene e sono rimasto soddisfatto dei risultati. Tuttavia, aggiungo una o due ulteriori visualizzazioni del contenitore, che avranno tabelleViews non scorrevoli, e odio dover creare un nuovo protocollo delegato per ogni vista del contenitore. Non penso di poter rendere il protocollo generico.
Qualche idea?
Sono di fronte a un problema simile. Hai trovato una soluzione per questo? – ntsh
@ntsh Ho appena aggiunto la mia risposta. dai un'occhiata e vedi se questo ti aiuta – djibouti33
Grazie. Anch'io ho finito con una soluzione simile usando contentView di tableView. – ntsh