2010-11-05 2 views
1

J'ai 2 UIImageView:Définir la valeur d'un pointeur dans l'objectif c?

UIImageView *imageView1 = [[UIImageView alloc] init]; 
UIImageView *imageView2 = [[UIImageView alloc] init]; 

et un UIImage:

UIImage *image = [[UIImage alloc] imageWithNamed:@"image_name.png"]; 

donc je définir l'image pour les deux UIImageView avec le même UIImage:

imageView1.image = image; 
imageView2.image = image; 

Comment puis-je changer la valeur de UIImage * image (Not point UIImage * image à un autre UIImage par: image = [[UIImage alloc] imageWithNamed: @ "autre_nom_image.png"];). Alors, quand je le fais, je veux imageView1 et imageView2 afficher la même image instances (de another_image_name.png)

Répondre

2

UIImage sont immuables, une fois qu'ils ont été alloc « d » et d init, ils ne peuvent pas changer. Si vous souhaitez modifier les images pour vos vues d'image, vous devez utiliser alloc et init une autre instance UIImage (ou utiliser les méthodes de convenance, par exemple +imageNamed: etc.) et la définir sur vos deux vues d'image.

objets d'image sont immuables, de sorte que vous ne pouvez pas modifier leurs propriétés après la création

0

Vous ne pouvez pas modifty un UIImage donc ce que vous demandez est impossible de le faire sans détour. Cependant, vous pouvez avoir imageView2 s'enregistrer en tant qu'observateur sur la propriété image de imageView1y en utilisant key value observing et quand il observe une modification, il définit son image sur le même que dans imageView1.

// To register for KVO 
[imageView1 addObserver: imageView2 
      forKeyPath: @"image" 
       options: NSKeyValueObservingOptionNew 
       context: NULL]; 

Dans imageView2, vous aurez besoin des éléments suivants. Vous pouvez sous-classer UIImageView ou lui ajouter une catégorie.

// method in imageView2 to deal with observations 

- (void)observeValueForKeyPath: (NSString*) keyPath 
         ofObject: (id)object 
         change: (NSDictionary*)change 
         context: (void*) context 
{ 
    if ([keyPath isEqual:@"image"]) 
    { 
     [self setImage: [change objectForKey:NSKeyValueChangeNewKey]]; 
    } 
} 
Questions connexes