Paramètre TranslatesAutoresizingMaskIntoConstraints sur No sur UIPageViewController

Je suis en train de construire un projet complexe, où, entre autres choses, j'ai besoin de configurer un UIPageViewController comme un childview d'une vue principale. Je suis avec mise en page automatique, et à l'aide de contraintes d'ordre les différents éléments dans la vue principale.

Le problème, c'est que quand j'essaye d'exécuter l'application, il se bloque à cause du conflit entre NSAutoresizingMaskLayoutConstraints.

2013-10-28 16:22:18.419 Red Event App[1658:60b] Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints) 
(
"<NSLayoutConstraint:0x145c1990 V:|-(20)-[UINavigationBar:0x145bf6b0]   (Names: '|':UIView:0x145bf620 )>",
"<NSLayoutConstraint:0x145bf510 V:[UINavigationBar:0x145bf6b0]-(0)-[UIView:0x145bef70]>",
"<NSLayoutConstraint:0x145d0550 UIView:0x145a8c10.top == UIView:0x145bf620.top>",
"<NSAutoresizingMaskLayoutConstraint:0x145b3a40 h=-&- v=-&- UIView:0x145a8c10.midY == UIView:0x145bef70.midY + 56.5>",
"<NSAutoresizingMaskLayoutConstraint:0x145b3a70 h=-&- v=-&- UIView:0x145a8c10.height == UIView:0x145bef70.height + 113>"
)

L'habitude de remède pour ce paramètre est TranslatesAutoresizingMaskIntoConstraints pas.

Cependant, lorsque je fais ceci, l'enfant vues sur la UIPageViewController commencer à ignorer les limites de la PageViewController, et à la fin (aussi loin que je peux voir) avec un point d'origine (0,0).

J'ai essayé de corriger la position de réglage de la cadres de par la portée de la main lors de la configuration de la source de données (_itemViewControllers):

- (void)setupLeafs{
    _itemViewControllers = [[NSMutableArray alloc]init];
    for(NSString *pagename in _datasource){
        RWNode *page = [_xml getPage:pagename];
        UIViewController *viewController = [RWNavigationController getViewControllerFromDictionary:[page getDictionaryFromNode]];
        viewController.view.frame = CGRectMake(self.view.frame.origin.x,self.view.frame.origin.y,self.view.frame.size.width, self.view.frame.size.height);

       [_itemViewControllers addObject:viewController];
   }
}

et lors de l'obtention de la page

- (UIViewController *)pageViewController:(UIPageViewController *)pageViewController viewControllerBeforeViewController:(UIViewController *)viewController {
    UIViewController *nextViewController = [self getPreviousLeaf:viewController];
    nextViewController.view.frame = CGRectMake(self.view.frame.origin.x,self.view.frame.origin.y,self.view.frame.size.width, self.view.frame.size.height);
    return nextViewController;
}

mais n'ont aucun effet.

J'ai besoin de contraintes pour ce que je suis en train de faire, afin de coller à des Masques n'est pas une option. Je pense que ce que je cherche est un moyen de mettre des contraintes sur les UIPageViewController enfants après qu'ils ont été ajoutés (par quelque procédé que ce soit les appels viewControllerBeforeViewController). Mais je voudrais vraiment entendre parler de quelque manière que ce problème peut être résolu.

Edit:
J'ai trouvé un hack pour résoudre le problème. Je ne suis pas tout à fait sûr si ce que je vous liste ici est l'ensemble de la solution, mais c'est ce que je remarque maintenant, après plus d'un mois de bricoler avec le code.

D'abord, du point de vue du contrôleur qui met en place le pageviewcontroller, j'ai les deux lignes suivantes, après je l'ai initialisé le pageviewcontroller

UIView *pageView = self.pageViewController.view; 
pageView.frame = self.view.frame;

Pas que j'ai mis [self.view setTranslatesAutoresizingMaskIntoConstraints:NO]; de ce point de vue-contrôleur.

D'autre part, sur l'enfant contrôleurs-je vérifier si la vue est utilisé à l'intérieur ou à l'extérieur d'un pageviewcontroller. Seulement si la vue est pas être utilisé dans un pageviewcontroller est [self.view setTranslatesAutoresizingMaskIntoConstraints:NO]; ensemble sur la vue enfant.

Maintenant, cela fonctionne (pour moi) pour le moment. Mais je voudrais vraiment une solution qui est moins hacky.

source d'informationauteur Rubberduck