J'essaie d'ouvrir une nouvelle vue sur la sélection d'une cellule de tableau dans une vue précédente. La nouvelle vue que j'essaie d'ouvrir, consiste en différentes sous-vues ou modules. Par conséquent, je remplis chaque sous-vue une par une à l'intérieur de la méthode [self populate]
qui est déclenchée à l'intérieur de la méthode viewDidLoad
.UIScrollView ne se met pas à jour correctement, affiche la vue vide de manière aléatoire
-(void)viewDidLoad{
[super viewDidLoad];
[self populate];
}
-(void) populate{
[self.edgeGallery loadImagesWithURLs: _items];
// Modular view: main info
[self.vwListingMainView setListing: _listing];
[self.vwListingMainView refresh];
// Modular view: listing agents
_vwListingAgentsView.agentsArray = _listing.agents;
// Modular view: listing info
_vwListingInfoView.listing = _listing;
[_vwListingInfoView refresh];
// Modular view: Listing activities
_vwListingActivityView.listing = _listing;
[_vwListingActivityView requestCounts];
}
Chaque fois qu'une nouvelle sous-vue est peuplée, la méthode viewWillLayoutSubViews
est appelée. C'est la méthode où je calcule la hauteur et les autres contraintes de la sous-vue et l'ajoute à la vue d'ensemble.
- (void)viewWillLayoutSubviews {
[super viewWillLayoutSubviews];
[self computeAndFixHeight];
}
- (void) computeAndFixHeight {
// Adjusting each module's height
_cstMainInfoHeight.constant = [_vwListingMainView getViewHeight];
_cstListingActionsHeight.constant = [_vwListingActionsView getViewHeight];
_cstListingAgentsHeight.constant = [_vwListingAgentsView getViewHeight];
_cstListingInfoViewHeight.constant = [_vwListingInfoView getViewHeight];
// Adjusting scroll view height
NSInteger computedScrollHeight = _vwListingUpcomingEventView.frame.origin.y + [_vwListingUpcomingEventView getViewHeight];
[self.scrollView setContentSize:CGSizeMake(self.view.frame.size.width, computedScrollHeight)];
_cstContainerBottom.constant = -computedScrollHeight - kDefaultNegativeScrollH;
[self.view layoutIfNeeded];
[self.view updateConstraints];
}
Cependant, une fois la vue est complètement chargée, le problème que je suis face est que parfois, je reçois la vue complète et parfois, au hasard , je reçois une vue vide. Je pense que [self.view layoutIfNeeded]
est le problème, mais j'ai également essayé d'utiliser [self.view setNeedsLayout]
et [self.view setNeedsUpdateConstraints]
, mais le problème persiste. Toute aide serait appréciée. S'il vous plaît excusez moi si je fais quelque chose de stupide. Je suis nouveau sur le développement iOS.
Tout d'abord, vous devez appeler super dans viewDidLoad(): [super viewDidLoad]; – onnoweb
Je pense que vous n'utilisez pas un UITableView. Il semble que vous utilisez juste un UIScrollView, non? Dans ce cas, si vous définissez correctement vos contraintes, il ne devrait pas être nécessaire d'implémenter 'computeAndFixHeight'. Regardez cette vidéo pour voir si vous avez bien défini vos contraintes: https://www.youtube.com/watch?v=4oCWxHLBQ-A – ghashi
Je voudrais déplacer votre [auto-population]; méthode à afficherWillAppear –