2011-12-31 61 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

如果它位於視圖控制器,那麼所有你需要做的是:

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

編輯

根據您的評論。

當你想改變類B類A的對象的圖像,你可以做兩種不同的方式:

1.通過參照對象

這是設置初始化其上創建獲取指針到現有MAINVIEW

@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.通過NSNotificationCenter發佈本地通知。

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

現在,在您的ViewController聽通知,並在init方法反應

在視圖控制器

- (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

它位於Settings.m 我試過ViewController.displayImage.image = [UIImage imageNamed:@「image.png」];但它不會找到「displayImage」。我試圖改變ViewController的形象(我的主視圖 - 這是一個雙視圖程序)。 – MerryXmax 2011-12-31 19:49:57

+0

爲了改變另一個班級的形象女巫你沒有一個參考是不可能的。您必須具有對現有視圖的引用或使用NSLocalNotification來更改它。我會更新我的內容來展示我的意思。 – Cyprian 2011-12-31 19:54:33

+0

謝謝!我對此很期待。 – MerryXmax 2011-12-31 20:02:41

相關問題