Utilisation d'UIImageView pour afficher une image web ?

vincenvincen Membre
20:19 modifié dans API UIKit #1
Bonjour,

Voilà  j'ai besoin d'afficher quelques images différentes que je vais récupérer sur le net et qu'il me faut afficher chacune dans une petite fenêtre dans mon appli iPhone. D'après ce que j'ai compris il faut utiliser les boutons UIImageView qui sont le plus adapté mais que faire ensuite ? J'ai lu quelques tutoriaux mais j'ai du mal à  voir comment se fait le lien entre le bouton dans le layout dans Interface Builder et le prog dans XCode :-( Et ensuite comment attribuer mon image web à  chacun des boutons !
Tous vos liens, conseils, etc sont les bienvenus, merci bien :D

Vince

Réponses

  • Philippe49Philippe49 Membre
    20:19 modifié #2
    La page de UIImageView fait référence à  plusieurs exemples Reflection TheElements TouchCells UICatalog URLCache Scrolling ...  commence par les observer.

    Il y a le même type de référence dans la doc pour les méthodes que l'on pourrait utiliser

    La doc s'atteint via le menu Help >Documentation et dans le pael de gauche prendre évidemment iPhone.


    rq : UIImageView n'est pas un bouton mais un container (il n'hérite pas de UIControl)

  • vincenvincen Membre
    20:19 modifié #3
    Merci pour les liens sur UIImageView mais visiblement UIWebView est plus adéquat pour ce que je veux faire (afficher une image du web dans un bouton sur l'iPhone). J'ai donc créé un bouton type UIWebView et j'ai mis ça dans mon code:

    MainViewController.h:

    @interface MainViewController : UIViewController {
    UIWebView *webView;
       
    }

    MainViewController.m:

    - (void)viewDidLoad {
    webView mainView] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.skivr.com/panos/2008-12-08-7-laux-pouta-depart/vignette.jpg"];
      [super viewDidLoad];
    }

    Mais à  chaque fois que je compile j'obtiens le message d'erreur:

    MainViewController.m:37: warning: 'UIWebView' may not respond to '-mainView'
    MainViewController.m:37: warning: (Messages without a matching method signature

    et malgré des recherches nombreuses sur google j'arrive pas à  me sortir de cet ornière :-( Une idée ?

    Merci de vos lumières :)

    Vince
  • AliGatorAliGator Membre, Modérateur
    20:19 modifié #4
    Salut Vince,

    Heu je crois que tu confonds un peu les concepts et les termes.
    Cela fait plusieurs fois que tu parles de "boutons" pour des vues, que ce soit UIImageView ou UIWebView ce sont des vues et pas des boutons
    C'est bien différent, un bouton ayant une (ou plusieurs) action(s) associée(s) et étant fait pour être cliqué, une vue étant faite pour afficher du contenu (genre une image).

    Quand tu vas cliquer sur ton bouton, cela va afficher une image dans ta vue. "Afficher une image du web dans un bouton sur l'iPhone" ou "un bouton de type UIWebView" ça ne veut rien dire, ce sont des termes incohérents :P

    Du coup webView est comme tu l'as déclaré une UIWebView, qui répond directement à  "loadRequest", mais qui ne répond pas à  "mainView"
    De plus certes tu peux passer par une WebView pour ton affichage, mais c'est pas utile, une UIImageView suffit. Que ton image soit en local ou vienne du net, cela ne change rien, tu peux initialiser ton image à  l'aide d'une URL :
    @interface MainViewController : UIViewController {<br />  IBoutlet UIImageView* imageView; // à  connecter à  ta imageView de ton interface dans IB<br />}<br /><br />@implementation MainViewController<br />...<br />-(void) viewDidLoad {<br />  NSURL* url = [NSURL URLWithString:@&quot;http://www.skivr.com/panos/2008-12-08-7-laux-pouta-depart/vignette.jpg&quot;];<br />  imageView.image = [UIImage imageWithData: [NSData dataWithContentsOfURL:url] ];<br />  [super viewDidLoad];<br />}
    
  • vincenvincen Membre
    20:19 modifié #5
    Tiens tiens le croco qui me poursuit  >:( Pas moyen d'être tranquille  :adios!:

    Merci pour le coup de pouce par contre y'a un truc que je capte pas du tout c'est comment tu fais le lien entre le IBOutlet UIImageView et la vue UIImageView que j'ai créé dans Interface Builder  :)beta:

    Merci

    Vincèn
  • AliGatorAliGator Membre, Modérateur
    20:19 modifié #6
    Ah ben ça il va falloir t'y faire, je suis omniprésent :P

    Pour les IBOutlet, c'est un concept qu'il faut que tu comprennes correctement car ce sont les bases pour pouvoir relier ton code das Xcode et ton interface ou plus exactement les objets dans ton NIB. Une fois que tu as compris le principe ça va tout seul mais au début ça saute pas forcément aux yeux.

    En fait un IBOutlet, comme je l'expliquais dans un autre post, ne fait rendre visible une variable d'instance dans IB. Ca permet quand le fichier NIB est chargé par ton programme qu'il connecte/associe automatiquement la variable d'instance à  l'objet auquel l'IBOutlet a été connecté dans ton NIB dans IB.

    Pour connecter un IBOutlet vers ta UIImageView, tu vas dans IB, et tu fais un Ctrl-clic sur l'objet qui contient ton IBOutlet à  connecter, et dans la foulée tu fais glisser vers l'objet à  connecter. Donc si tu reprends le code d'exemple que je t'ai donné, tu fais un ctrl-clic sur ton AppController et sans relâcher tu fais glisser ta souris vers ton UIImageView. Il va alors t'afficher la liste des IBOutlets de AppController que tu peux connecter à  cette UIImageView (en l'occurence il n'y en aura qu'un), tu choisis donc l'outlet "imageView" et tu relâches.
    Une autre méthode consiste à  faire un ctrl-clic sur AppController et relâcher le bouton de la souris, pour afficher le panel listant toutes les connexions possibles depuis et vers ton AppController. Dans ce panel tu retrouveras alors ton IBOutlet, avec un petit cercle vide (car pas encore connecté) à  sa droite. Et là  il suffit de "tirer un lien" (cliquer-glisser) de ce cercle vide en face de "imageView" vers ton UIImageView dans IB pour créer la connexion entre ton IBOutlet et l'objet : ton cercle va alors passé en "rempli" pour indiquer que la connexion a été faite.

    Voilà  m'sieur ;)
  • vincenvincen Membre
    20:19 modifié #7
    dans 1229042693:

    Ah ben ça il va falloir t'y faire, je suis omniprésent :P
    Pour les IBOutlet, c'est un concept qu'il faut que tu comprennes correctement car ce sont les bases pour pouvoir relier ton code das Xcode et ton interface ou plus exactement les objets dans ton NIB. Une fois que tu as compris le principe ça va tout seul mais au début ça saute pas forcément aux yeux.


    Merci bein Ali pour les infos, désolé de pas avoir répondu plus tôt à  cause des fêtes :D
Connectez-vous ou Inscrivez-vous pour répondre.