2010-11-05 4 views
1

У меня есть 2 UIImageView:Задайте значение для указателя в объективе c?

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

и один UIImage:

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

так я установить изображение для обоих UIImageView с той же UIImage:

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

Как я могу изменить значение of UIImage * изображение (не пункт UIImage * изображение к другому UIImage by: image = [[UIImage alloc] imageWithNamed: @ "another_image_name.png"];). Поэтому, когда я это сделать, я хочу imageView1 и imageView2 отображать одно изображение (another_image_name.png)

ответ

2

UIImage экземпляры неизменны, как только они были alloc «d и init» d, они не могут изменить. Если вы хотите изменить изображения для своих изображений, вам нужно указать alloc и init еще один экземпляр UIImage (или использовать удобные методы, например +imageNamed: и т. Д.) И установить его в оба изображения.

объекты Image неизменны, так что вы не можете изменить свои свойства после создания

0

Вы не можете modifty в UIImage так, что вы просите, невозможно сделать прямолинейно.

Однако вы можете иметь imageView2 в качестве наблюдателя в качестве свойства изображения imageView1y, используя key value observing, и когда он наблюдает за изменением, он устанавливает свое изображение таким же, как в imageView1.

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

В imageView2 вам понадобится следующее. Вы можете подклассифицировать UIImageView или добавить к нему категорию.

// 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]]; 
    } 
} 
Смежные вопросы