7
votes

Est-il possible que mon UIViewController détecte s'il est affiché dans un uipopovercontroller ou non?

J'aimerais utiliser un contrôleur d'affichage pour une vue sur iPhone et un iPad Popoverview. Si la vue est affichée dans une colleure, j'aimerais faire des reformatations mineures de l'interface utilisateur.

est-il possible que mon UIViewController de détecter s'il est affiché dans un uipopovercontroller?

J'ai trouvé la propriété contenusizeforvieviepopover, idéale pour redimensionner la vue, mais je voudrais supprimer / masquer un élément si la vue est chargée dans un PopoverView.


1 commentaires

J'ai la même question, mais il semble qu'il n'y ait aucune façon fiable de le faire à partir de IOS 5.0. Donc, ma solution de contournement consiste à ajouter une propriété Bool 'Popovermode' à l'intérieur du contrôleur et définissez cela en vrais chaque fois que j'utilise ce contrôleur à l'intérieur d'une colleure.


4 Réponses :


1
votes

Je ne pense pas que ce soit possible. J'ai essayé de regarder la classe du parentviewcontroller, ainsi que la classe de la présentationViewController, et les deux sont NULL. Sans eux fournissant une propriété sur UIViewController similaire à la propriété NavigationController, elle ne peut pas être faite.


0 commentaires

0
votes

Mon approche serait d'utiliser / créer différents sous-classes UIViewController pour chacun des 2 types de présentation. Très souvent, ils peuvent partager une superclasse commune. Voici un exemple:

@interface CMDetailsViewController : UIViewController
@end

@interface CMDetailsSinglePageViewController : CMDetailsViewController
@end

@interface CMDetailsPopoverViewController : CMDetailsViewController
@end


0 commentaires

-1
votes

Vous pouvez facilement vérifier si votre appareil est un iPad ou un iPhone et effectuez vos ajustements.

Utilisez quelque chose comme ceci P>

if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
     // The device is an iPad
}
else
{
     // The device is an iPhone or iPod touch.
} 


0 commentaires

1
votes

Vous pouvez remplacer la méthode ci-dessous dans votre classe et la gérer avec la variable BOOL ou certaines fonctions

- (CGSize)contentSizeForViewInPopover
{
    popovermode = YES;
    [self callhideMethod];
    return CGSizeMake(320, 200);
}


0 commentaires