从另一个类访问 UI 图像
Posted
技术标签:
【中文标题】从另一个类访问 UI 图像【英文标题】:Accessing UI image from another class 【发布时间】:2015-08-11 18:10:45 【问题描述】:我正在编写一个道路安全应用程序,并且会有很多代码,所以我想我会将每个函数分成一个类。
现在我正在尝试从另一个类设置主 ViewController 的背景,但是它不起作用。这是我尝试过的代码:
-(void)StartBackgroundAnimation
ViewController *MainRoot = [[ViewController alloc] init];
MainRoot.BackgroundViewer.image = [UIImage imageNamed:@"Lunch_Background.png"];
NSLog(@"ok");
我所做的是创建了一个名为StartBackgroundAnimation
的函数,并导入了主视图控制器类,并从中创建了一个对象。之后,我将这个类导入到主视图控制器中,我调用了这个函数,但是图像不起作用。
注意:NSLog
完美运行,函数被调用,但图像没有改变。
【问题讨论】:
为每个函数创建一个类绝对没有意义,你会有成千上万个类 我知道,但这是主要问题 :) 当您执行ViewController *MainRoot = [[ViewController alloc] init];
时,您正在创建该控制器的另一个实例,它不是您正在查看的那个
那么我如何才能从另一个类中更改图像我必须做什么?
没那么容易,你可以在ViewController
里面创建一个你想改变的函数,然后从第二个ViewController
调用那个函数
【参考方案1】:
如果你真的想将函数存储在不同的类中,只需返回一个 UIImage 并在视图控制器中分配它。
所以在您的自定义类中。
- (UIImage*)backgroundImage
return [UIImage imageNamed:@"Lunch_Background.png"];
在你的主视图控制器内部:
self.view.backgroundView.image = [instanceofyourclass backgroundImage];
【讨论】:
【参考方案2】:如果您想从类外部的类中访问数据,通常最好在Objective-C
中使用属性。
// MyClass.h
@interface MyClass : Superclass
@property (strong, nonatomic) UIImage * backgroundImage;
@end
这样,您可以使用类内部的self.backgroundImage
和外部的anotherClass.backgroundImage
来读取/写入属性。
编辑:拼写...
【讨论】:
Hmm.. 您实际上是否将UIImageView
的图像属性设置为backgroundImage
?您可以在 .m 中放入一个函数,该函数将在 backgroundImage
属性更改时运行。 -(void)setBackgroundImage:(UIImage *)imagemyImageView.image = image; _backgroundImage = image;
。两条线都很重要。第一个将屏幕视图的图像设置为image
,第二个更改存储的值。您需要使用对图像视图的引用来更新第一行。以上是关于从另一个类访问 UI 图像的主要内容,如果未能解决你的问题,请参考以下文章