Question

Je travaille sur un traitement d'un schéma d'URL personnalisé dans une application et essaie de trier:

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url

Je passe et l'analyse avec succès une URL dans un NSDictionary dans mon application, mais se demandant « Et maintenant? » handleOpenURL renvoie un BOOL, mais à quoi? Il est difficile pour moi de déboguer comme je l'ai pas comprendre comment avoir débogueur en cours d'exécution sur l'appareil quand il se déclenche.

Tout ce que je sais est que applicationDidFinishLaunching complète avant handleOpenURL et il semble que mon rootViewController est à l'écran.

- (void)applicationDidFinishLaunching:(UIApplication *)application {
    // Load data
    [self initializeData]; 
    // Configure and show the window
    [window addSubview:[navigationController view]];    
    [window makeKeyAndVisible];
}

Quoi qu'il en soit, donc, maintenant j'ai cet objet NSDictionary dans mon appDelegate, comment voulez-vous passer à la RootViewController afin qu'il puisse faire quelque chose avec elle dans sa vue détaillée? Est-ce que j'appelle

[[navigationController topViewController] addItemWithDictionary:theDictionary];

avant la return YES; de handleOpenURL Ou, devrais-je créer une propriété NSDictionary dans mon appDelegate puis après « Retour OUI; » récupérer de mon rootViewController (ou detailViewController - n'ont pas fonctionné qui encore). Si oui, quel est le déclencheur? On ne sait pas pour moi où le rendement handleOpenUrl se dirigent ... et, le cas échéant, la valeur qu'ils ont pour moi.

Merci!

Était-ce utile?

La solution 3

Je pense que j'ai répondu à ma propre question, mais si vous avez d'autres idées que j'aimerais les entendre!

Je pense que je dois poursuivre le traitement dans handleOpenURL et tourner le dictionnaire dans un objet qui est ensuite ajouté à mon tableau de appDelegate que RootViewController utilise pour construire sa vue de table. De toute évidence besoin de travailler sur une validation et une confirmation de la part de l'utilisateur avant de tableau de peuplement automatique. Je suppose que cela aussi se produire dans les limites de handleOpenURL?

Autres conseils

Jetez un oeil à la suggestion à propos didFinishLaunchingWithOptions

http: //www.iphonedevsdk .com / forum / iphone-sdk-développement / 31742-handleopenurl-not-called.html

Il y a quelques approches que j'ai utilisé pour transmettre des données autour, et selon les conditions que je le mélanger.

  1. Gardez un monde autour de sorte que vous n'avez pas à vous soucier de passer.

  2. Inscrivez-vous / poster vos données en utilisant le modèle d'observateur avec un objet de notification à l'aide du centre de message de notification.

  3. Enregistrer les URL à NSUserDefaults (également un dictionnaire, mais vous ne devez pas le gérer).

Récemment, je devais faire quelque chose de similaire sur un UIWebView et la manipulation de filtrer des données d'URL. Je devais sous-classe WebViewCache et setSharedCache sur le NSURL. Je soupçonne fortement cela s'appliquerait à votre problème et en récupérant les données avec shouldStartLoadWithRequest.

une astuce très pratique pour le débogage openurl d'autres applications ou Safari mobile (appareil non jailbreaké) est sous-classe UIApplication et remplacer quelques méthodes non documentées, désolé, je ne me souviens pas des noms désinvoltes mais vous pouvez les déterrer à ericasadun.com, les noms sera assez évident.

lorsque vous lancez l'application via Xcode et frappé tremplin à la maison ne marche pas tuer le processus, car il a été lancé par Xcode (afaik) de sorte que vous pouvez lancer d'autres applications et appeler openurl tout en étant attaché au débogueur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top