【问题标题】:Changing the Image of a UIButton at Runtime在运行时更改 UIButton 的图像
【发布时间】:2012-05-17 02:09:45
【问题描述】:

我有 UIButton 实例,称为 card。我有一个名为“Representer”的对象,它有一个属性“image”,它是一个 UIImage。我正在尝试在运行时更改按钮图像的值。我在界面生成器中有按钮,并且还用按钮声明了一个 IBOutlet。我写了这段代码:

UIButton *card1 = [[UIButton alloc] init]; 
[card1 setImage:representer.image forState:UIControlStateNormal]; 

编译此代码时,按钮的图像不会改变。请有人帮助我!

【问题讨论】:

    标签: iphone objective-c xcode object


    【解决方案1】:

    您首先需要确保您的按钮已连接到 Interface Builder 中的 IBOutlet,您是否使用 Connections Inspector 做到了这一点?

    如果您的 .h 中有按钮:

    @property (nonatomic, retain) IBOutlet UIButton *option1Button;
    

    然后,在 .m 文件中,调用

    [option1Button setImage:representer.image forState:UIControlStateNormal];
    

    在您的代码中,您只是实例化了另一个 UIButton 并在其上设置了图像。这是很好的代码,但与 xib 中的按钮无关。

    这绝对假设 IBOutlet 在 Interface Builder 中正确连接。它应该是这样的:

    此外,您需要在按钮的图像与按钮的背景图像中保持一致。他们是两个不同的东西。如果您在 Interface Builder 中指定了“图像”,则在代码中执行相同操作,反之亦然,使用 backgroundImage。

    【讨论】:

    • 是的,这就是我正在做的。它只是坐下来,什么都不做。
    • [cardOne setImage:card1.image forState:UIControlStateNormal];
    • 我说对象的名字是representer,以免混淆,实际上是card1。
    • 我将发布 Interface Builder 的屏幕截图,您是否确保该按钮已连接到 Connections Inspector 中的 File Owner 的 IBOutlet?
    • cardOne,在.h文件中,我写了@property(nonatomic,retain)IBOutlet UIButton *cardOne;
    【解决方案2】:

    在要更改图像的行设置断点并确保 cardOne 不为零。 (或使用 NSLog 语句。)断开的出口链接是代码无法按预期工作的一个非常常见的原因。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多