2010-09-05 4 views
1

Je suis en train de rassembler quelques méthodes utilitaires pour tester et j'aimerais pouvoir afficher une vue à partir d'une méthode arbitraire - une méthode qui n'est pas nécessairement connue tous les UIViewControllers ou fenêtres. Est-ce possible?Affichage d'une vue à partir d'une méthode arbitraire sur l'iPhone

Par exemple, je prépare un shim de gestionnaire de position personnalisé afin que je puisse injecter manuellement des données de localisation lorsque je teste. Je voudrais que certaines des méthodes pour faire apparaître un MKMapView me permettent de sélectionner "l'emplacement actuel" au lieu d'entrer manuellement lat/long valeurs dans le code.

Répondre

1

En prenant les conseils de @ vodkhang J'ai jeté un coup d'œil sur le code et créé ma propre catégorie (UIView + ShowThySelf) pour afficher vue arbitraire de n'importe quelle méthode. Pour les intéressés, il se trouve sur github

http://github.com/appsinyourpants/Pants-Framework

+0

merci, bon travail, j'aurai besoin d'eux parfois :) – vodkhang

1

Je pense que c'est possible, même si je ne sais pas exactement comment le faire. La raison pour laquelle je sais que c'est possible parce que je vois FBConnect de Facebook et DDSocialLoginDialog Bibliothèque faire ce que vous décrivez. Le code source et l'architecture de FBConnect sont assez complexes, mais DDSocialLoginDialog est facile à obtenir et à retirer le code source dont vous avez besoin (2 classes avec 4 fichiers et quelques centaines de lignes de code). Les deux sont open source. Ensuite, j'espère que vous pouvez modifier le code source afin qu'il puisse ajouter MKMapView en tant que sous-vue

1

Résumé des méthodes mentionnées précédemment, si vous voulez rouler votre propre code:

Créer une UIControl. Ecrivez une méthode pour ignorer ce contrôle et ajoutez-la en tant que cible à ce contrôle. Placez l'affichage que vous souhaitez afficher à l'intérieur de ce contrôle en tant que sous-vue. Utilisation:

[UIApplication sharedApplication] keyWindow] 

ou (dans les rares cas où votre application a plus d'une fenêtre, comme support de câble VGA):

[[[UIApplication sharedApplication] windows] objectAtIndex: 0] 

trouver un endroit où ajouter un sous-vue (le que vous contrôlez créé). Ajoutez-le.

Questions connexes