Korzystając z komend Storyboards i Autolayout, mam kontroler UIViewController z UIScrollView jako widok główny. Mam kilka widoków kontenerów osadzonych w widoku przewijania. Niektóre widoki osadzonych kontenerów zawierają widoki UITableView, z których każdy ma komórki o różnych wysokościach. Potrzebuję wysokości tableView, aby była wystarczająco duża, aby pokazać wszystkie komórki naraz, ponieważ przewijanie zostanie wyłączone w tableView.Dopasowywanie wysokości widoku kontenera do wbudowanego UITableView
W głównym module UIViewController należy zdefiniować wysokość widoku kontenera, aby widok przewijania działał prawidłowo. Jest to problematyczne, ponieważ nie ma sposobu, aby dowiedzieć się, jak duże będzie moje tableView, gdy wszystkie komórki o różnej wysokości zostaną zakończone. Jak dostosować wysokość widoku kontenera w czasie wykonywania, aby pasował do mojego nie przewijanego widoku UITableView?
tej pory robiłem, co następuje:
// 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;
}
to działa dobrze i jestem zadowolony z rezultatów. Mam jednak do dodania jeszcze jeden lub dwa widoki kontenerów, które będą miały nie przewijane widoki tableView i nie chciałbym tworzyć nowego protokołu delegatów dla każdego widoku kontenera. Nie sądzę, żebym mógł stworzyć protokół, który mam generyczny.
Wszelkie pomysły?
Mam do czynienia z podobnym problemem. Czy znalazłeś rozwiązanie tego problemu? – ntsh
@ntsh Właśnie dodałem własną odpowiedź. spójrz i zobacz, czy to ci pomoże – djibouti33
Dzięki. Również skończyłem z podobnym rozwiązaniem przy użyciu contentSize tableView. – ntsh