在另一个视图的UIImageView上设置图像

时间:2011-12-31 19:43:19

标签: iphone objective-c ios

我正在尝试创建一种“设置”页面,而我很难切换原始视图的背景图像。到目前为止,代码是:

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

也许我可以得到一些指示?

谢谢,所有。

1 个答案:

答案 0 :(得分:4)

每次调用mainView方法时,都会创建一个新的switchBackground对象。您必须更改现有对象的背景才能看到更改发生。

从您的代码中很难说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中听取通知并做出反应

在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;
}