7
votes

-filviewController- DémissionModalViewController ne fonctionne pas sur iOS 5

Alors, tout indice à ce sujet? J'ai dû utiliser [auto-renvoi de modalviewController pour rejeter Modalviews. Fait drôle: lors du renvoi d'une tabbarcontroller, je pouvais toujours utiliser la référence à ParentViewController, lors de la mise en service d'une liste de visualisation régulière, non pas.


0 commentaires

6 Réponses :


22
votes

sur iOS 5, vous devrez utiliser le sélecteur présageViewController au lieu du sélecteur parentviewController .


5 commentaires

Merci mon pote. Je souhaite juste que le compilateur donnerait une indication à ce sujet, comment diable les gens sont-ils supposés le savoir? Lisez la documentation entière?


Le problème est que le code 4.x existant ne fonctionne plus dans les périphériques iOS5 à l'aide de parentviewController. De plus, si j'utilise PrésentationViewController, n'importe quel code de code 4.x, car il ne reconnaît pas le sélecteur. Corrigez-moi si j'ai tort, s'il-vous plait. Je commence à avoir un très mauvais sentiment à propos de iOS5.


Merci Jason et Vinnie! Cet iOS 5 commence à créer de la douleur pour moi :(


@Vinnie - Ce n'est pas la plus grande solution, mais vous pouvez toujours mettre en œuvre une méthode pour déterminer conditionnellement quel sélecteur doit être utilisé pour obtenir la présentation / parent VC. - (UIViewController *) GetPresentingViewController: (UIIMAGEPICKERCONTROLLER *) PICKER {RETURN ([PICKER RÉVISELLORY: @Selector (PrésentationViewController)]? [Picker PrésentationViewController]: [Picker ParsiVietroller]); }


Oui, je suis au courant des travaux. J'ai fini par utiliser une propriété CustomParentViewController que j'ai créée moi-même. Mon os à choisir est avec mes applications précédentes dans l'App Store. Ils sont cassés. Certains je ne sont pas mis à jour depuis longtemps et ne voulaient pas vraiment plonger dans le code pour résoudre les problèmes de pommes.



1
votes

L'application que j'ai dans le magasin a été construite à l'aide de iOS SDK 4.3 et utilise Self.ParentViewController DémissionModalViewControlleranimated: Oui . Il continue de travailler avec des appareils iOS 5. Je pensais que cela a été construit sur SDK 4.3. Maintenant, lorsque je le mettant à jour avec le nouveau SDK Xcode et iOS 5.0, il ne fonctionnera pas tel quel et je dois changer toutes les choses de clôture de la vue pour utiliser la solution de contournement du sélecteur conditionnel mentionné ci-dessus. (Yuck!)

Il suffit de penser que je mentionnerais que le renvoi du parent devrait travailler sur iOS 5 (au moins dans mon cas avec le SDK iOS 4.3). Je ne peux pas parler de SDK précédents ou d'autres sélecteurs avec parentviewController.


0 commentaires

3
votes
-(UIViewController *)getParentViewController{   
    float currentVersion = 5.0;
    float sysVersion = [[[UIDevice currentDevice] systemVersion] floatValue];

    if (sysVersion >= currentVersion) {
        // iOS 5.0 or later version of iOS specific functionality hanled here 
           return self.presentingViewController;
    }
    else {
        //Previous than iOS 5.0 specific functionality
           return self.parentViewController;

    }
}

2 commentaires

Alternativement, [auto réponsenelecteur: @Selector (présentationViewController)]; . De plus, ne préfixez pas la méthode avec obtenir .


+1 pour @ Ivanvučica. Prendre des décisions basées sur la version du système est une forme médiocre. Laissez l'objet vous dire à la place.



0
votes

Pour votre utilisation particulière de licenciement du contrôleur de vue modal, vous voudrez peut-être garder à l'esprit le deuxième paragraphe de la section de discussion de la documentation d'Apple pour -DismissModalViewControléranimated: .

Le contrôleur de vue parent est responsable de la mise en service du modal Voir le contrôleur, il a présenté avec le PresentModalViewController: animé: méthode. Si vous appelez cette méthode sur le contrôleur de vue modal lui-même, cependant, la vue modale contrôleur transforme automatiquement le message à sa vue parent Contrôleur.

Si vous appelez cette méthode sur le contrôleur de vue modal lui-même, cependant, Le contrôleur de vue modal transforme automatiquement le message à son Contrôleur de vue parent.

La solution de Jason est également géniale et utile! Merci!


0 commentaires

1
votes

J'ai construit une catégorie qui ajoutez PrésentationViewController sur iOS 4.

Il se désactive sur iOS 5.

Vous pouvez l'utiliser de manière transparente. S'il vous plaît voir Backward-Modal .


0 commentaires