2011-12-31 8 views
4

「設定」ページの一種を作成しようとしていますが、元のビューの背景イメージを切り替えるのが苦労しています。これまでのコードは、別のビューのUIImageViewでイメージを設定

-(IBAction)switchBackground:(id)sender { 
ViewController *mainView = [[ViewController alloc] initWithNibName:nil bundle:nil]; 
mainView.displayedImage.image = [UIImage imageNamed:@"image.png"];; 
} 

おそらく私はいくつかのポインタを得ることができますか?

ありがとうございました。

答えて

4

switchBackgroundメソッドを呼び出すたびに、新しいmainViewオブジェクトが作成されます。変更が発生するのを見るには、既存のオブジェクトの背景を変更する必要があります。

あなたのコードから、switchBackgroundの方法がどこにあるかは分かりません。 ViewController

それはビューコントローラに配置されている場合は、あなたがしなければならないすべては次のとおりです。あなたのコメントを1として

self.displayedImage.image = [UIImage imageNamed:@"image.png"]; 

EDIT

あなたがクラスBからクラスAのオブジェクトの画像を変更したいときは、2つの異なる方法でそれを行うことができます:オブジェクトへの参照を通じ

1.

これが設定され作成時に既存のMAINVIEW NSNotificationCenterを介してローカル通知を掲載することにより

@property(nonatomic,assign)ViewController *mainView; 

- (id)initWithMainViewController:(ViewController*)vc { 
    self = [super init]; 
    if (self) { 
     self.mainView = vc; 
    } 
    return self; 
} 

-(IBAction)switchBackground:(id)sender { 
    mainView.displayedImage.image = [UIImage imageNamed:@"image.png"]; 
} 

2へのポインタを取得します初期化子。あなたのViewControllerで今

-(IBAction)switchBackground:(id)sender { 
     [[NSNotificationCenter defaultCenter] postNotificationName: @"changeImage" object: [UIImage imageNamed:@"image.png"]]; 
} 

は、通知に耳を傾け、それはSettings.m に位置し

- (id)initWithMainViewController:(ViewController*)vc { 
    self = [super init]; 
    if (self) { 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(changeImage:) name:@"changeImage" object:nil]; 
    } 
    return self; 
} 

-(void)changeImage:(NSNotification*)notification{ 
    self.displayedImage.image = (UIImage*) notification.object; 
} 
+0

のViewControllerにinitメソッドで

を反応 私が試したViewController.displayImage.image = [UIImage imageNamed:@ "image.png"]; 「displayImage」は見つかりませんでした。私はViewControllerの画像を変更しようとしています(私のメインビュー - それは2ビュープログラムです)。 – MerryXmax

+0

魔女のために別のクラスの画像を変更するには、参照がありません。既存のビューへの参照を持っているか、それを変更するにはNSLocalNotificationを使用する必要があります。私は私の言いたいことを示すために私を更新します。 – Cyprian

+0

ありがとう!私はそれを楽しみにしています。 – MerryXmax

関連する問題