Ok, j'ai été aux prises avec le même problème. Aucune des deux solutions n'a fonctionné pour moi très bien, c'est pourquoi j'ai décidé de faire un peu de recherche et de trouver comment cela fonctionne.
C'est ce que j'ai découvert:
- Lorsque vous définissez l' contentSizeForViewInPopover
dans votre vue-contrôleur, il ne sera pas modifié par la liste elle-même - même si liste de taille peut changer lors de la navigation à l'autre contrôleur.
- Lorsque la taille de la liste va changer lors de la navigation vers les différents contrôleur, en remontant, la taille de la liste n'a pas de restauration
- Modification de la taille de la liste dans viewWillAppear donne de très étrange animation (quand vous disons que vous popController à l'intérieur de la liste) - je n'avais pas le recommander
- Pour moi, le réglage de la codé en dur de la taille à l'intérieur du contrôleur ne fonctionnerait pas du tout mon contrôleurs ont parfois de grandes parfois des petits - contrôleur qui va présenter l'idée à propos de la taille de l'
Une solution pour tous, que la douleur est comme suit:
Vous devez réinitialiser la taille de l' currentSetSizeForPopover
dans viewDidAppear. Mais vous devez être prudent lorsque vous aurez mis la même taille comme cela a déjà été défini dans le champ currentSetSizeForPopover
alors la liste ne changera pas la taille. Pour ce faire, vous pouvez tout d'abord définir le faux taille (qui sera différent de celui qui a été mis en avant) suivie par la mise à la bonne taille. Cette solution fonctionne même si votre contrôleur est imbriquée à l'intérieur de la manette de navigation et la liste va changer sa taille en conséquence, lorsque vous naviguez entre les contrôleurs.
Vous pouvez facilement créer une catégorie sur UIViewController avec la suite de la méthode d'assistance que ferait l'affaire avec réglage de la taille:
- (void) forcePopoverSize {
CGSize currentSetSizeForPopover = self.contentSizeForViewInPopover;
CGSize fakeMomentarySize = CGSizeMake(currentSetSizeForPopover.width - 1.0f, currentSetSizeForPopover.height - 1.0f);
self.contentSizeForViewInPopover = fakeMomentarySize;
self.contentSizeForViewInPopover = currentSetSizeForPopover;
}
Puis il suffit de l'invoquer en -viewDidAppear
de contrôleur désiré.