【问题标题】:Accessing UI image from another class从另一个类访问 UI 图像
【发布时间】: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调用那个函数

标签: ios objective-c xcode xcode6


【解决方案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 *)image{myImageView.image = image; _backgroundImage = image;}。两条线都很重要。第一个将屏幕视图的图像设置为image,第二个更改存储的值。您需要使用对图像视图的引用来更新第一行。
    猜你喜欢
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-30
    • 2019-04-18
    • 2019-08-03
    相关资源
    最近更新 更多