charger une vue perso via interface builder
Bonjour a tous,
j'ai un petit souci !
J'utilise le code source d'une vue que j'ai trouvé sour le net pour afficher des cartes google map.
Ce code source est composé d'une vue dérivé de UIView et d'un composant MapWebView qui est dérivé de webview.
La UIview charge donc le composant MapWebView le problème est que si j'appelle ma View au lancement de l'application pas de problèmes tout fonctionne.
Cependant, quand j'incorpore dans mon tab bar view via interface builder la view. J'ai une page blanche.
Si je met directement le composant MapWebView il fonctionne mais par contre j'ai pas accès a toutes les méthodes gérée par la UIview !
Alors ma question est : comment puis-je incorporer une UIview déjà créée pour qu'elle fonctionne ?
j'ai un petit souci !
J'utilise le code source d'une vue que j'ai trouvé sour le net pour afficher des cartes google map.
Ce code source est composé d'une vue dérivé de UIView et d'un composant MapWebView qui est dérivé de webview.
La UIview charge donc le composant MapWebView le problème est que si j'appelle ma View au lancement de l'application pas de problèmes tout fonctionne.
Cependant, quand j'incorpore dans mon tab bar view via interface builder la view. J'ai une page blanche.
Si je met directement le composant MapWebView il fonctionne mais par contre j'ai pas accès a toutes les méthodes gérée par la UIview !
Alors ma question est : comment puis-je incorporer une UIview déjà créée pour qu'elle fonctionne ?
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
(voir l'onglet plug-ins dans Interface Builder)
Logiquement ça devrait marcher?
ce que je fais pour afficher la vue fonctiuonnelle c'est :
c'est le fait de l'initialisation qui ne se fait pas dans le Interface builder?
Non cela ne vient pas de là .
Bon UIWindow hérite de UIView, donc addSubview doit marcher
Il y a un crochet de trop dans l'initialisation de mapView
Tu as essayé avec une autre frame ?
MapView* mapView = [[[MapView alloc] initWithFrame: CGRectMake(10.,10. 50.,50.)] autorelease];
Sinon vérifier si window est bien ce que tu crois qu'il est.
Ce code fonctionne il m'affiche correctement ma carte a l'écran
Par contre quand je veux incorporer cette vue dans interface builder ça foire... je glisse une vue sur le stage, je la change en classe mapview et ça ne fonctionne pas.
(l'idée c'est d'incorporer la vue dans mon programme qui a déjà plusieurs vues et un tab bar controller pour switcher de vue)
Non je m'attendais pas a voir le résultat dans IB... Mais quand je lance j'ai toujours une page blanche... Y a t-il des exceptions ou des configurations spéciales a faire pour qu'une custom view puisse être ajoutée via interface builder ?
Très volontiers :P voici la source :
http://code.google.com/p/iphone-google-maps-component/
... ah oui, au fait ... que faut-il faire pour que la vue apparaisse ? réponse là :
Doc UIView
En réalité, le chargement des vues n'est pas tout à fait le même dans cocoa vs cocoaTouch.
Code très intéressant en effet. Le problème c'est qu'il passe par un serveur intermédiaire : http://www.wenear.com/iphone-test? . Bref c'est pratique pour expérimentation mais le code ne passera pas dans AppStore. (pas de logo-copyright Google )
J'aimerais bien trouvé la même chose en accord avec la politique d'utilisation de API Google, si il y en a qui connaisse des alternatives je suis preneur.
Du premier coup? Ah bon je me demande comment tu as fait...
en tout cas j'ai trouvé la réponse sur le groupe de discussion du concepteur il fallait ajouter
Sinon le lien que tu m'a donné pointe sur un fichier en local
@amnesic
Le site utilise simplement l'API de google map comme on peut la trouver partout sur le net. Donc rien ne t'empêche de faire ta propre carte avec le copyright de google. Je sais comment il a fait pour ne pas avoir ça sur sa carte... Peut-être sa clé API est une version pro et du coup pas de logos
Dans cette doc, on lit juste que les custom UIView créées dans IB n'appellent pas initWithFrame: contrairement à NSView.
Donc pour les initialiser, il faut utiliser initWithCoder: à la place.
Le truc de "didMoveToSuperview", j'imagine que c'est pour initialiser la vue quelle que soit son origine, mais je trouve ça assez tordu. Il existe des initialisateurs spécifiques pour chaque situation, autant les utiliser.