我正在尝试创建一种“设置”页面,而我很难切换原始视图的背景图像。到目前为止,代码是:
-(IBAction)switchBackground:(id)sender {
ViewController *mainView = [[ViewController alloc] initWithNibName:nil bundle:nil];
mainView.displayedImage.image = [UIImage imageNamed:@"image.png"];;
}
也许我可以得到一些指示?
谢谢,所有。
答案 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;
}