【问题标题】:how to add UIImage from a NSMutableArray of images to UIButton using setImage如何使用 setImage 将 NSMutableArray 图像中的 UIImage 添加到 UIButton
【发布时间】:2013-05-09 09:12:11
【问题描述】:

我有一个这样创建的 UIImages 数组

UIImage *tButtonImage = [UIImage imageNamed:@"button-measurement.png"];
UIImage *tPButtonImage = [UIImage imageNamed:@"button-parts.png"];
UIImage *oPButtonImage = [UIImage imageNamed:@"button-onboard.png"];
UIImage *dButtonImage = [UIImage imageNamed:@"button-opening.png"];

// 然后根据 NSDicitonary / keyvalue 对的相应值将决定将哪些 UIImages 放入我的数组中

NSMutableArray *arrayOfButtonImages = [[NSMutableArray alloc] init];

if ([hasInfoSetIDString isEqualToString:@"T"]) {
    [arrayOfButtonImages addObject:tButtonImage];
}
if ([hasTSetIDString isEqualToString:@"T"]) {
    [arrayOfButtonImages addObject:tPButtonImage];
}
if ([hasOSetIDString isEqualToString:@"T"]) {
    [arrayOfButtonImages addObject:oPButtonImage];
}
if ([hasDSetIDString isEqualToString:@"T"]) {
    [arrayOfButtonImages addObject:dButtonImage];
}

此时取决于我的 NSDictionary 中的值,我可能有一个看起来像这样的数组。

NSLog(@"%@", arrayOfButtonImages);

(
    "<UIImage: 0x2001f4c0>",
    "<UIImage: 0x1ed51c20>"
)

然后我尝试将这些图像应用到我拥有的按钮上,因此按钮是“动态的”。

if (arrayOfButtonImages != nil) {

            for (int i = 0; i < [arrayOfButtonImages count]; i++) {
                if (i == 0) {
                    [jumpButton1P setImage:[arrayOfButtonImages objectAtIndex:i] forState:UIControlStateNormal];
                }
                else if (i == 1) {
                    [jumpButton2P setImage:[arrayOfButtonImages objectAtIndex:i] forState:UIControlStateNormal];
                }
                else if (i == 2) {
                    [jumpButton3P setImage:[arrayOfButtonImages objectAtIndex:i] forState:UIControlStateNormal];
                }
                else if (i == 3) {
                    [jumpButton4P setImage:[arrayOfButtonImages objectAtIndex:i] forState:UIControlStateNormal];
                }
                else if (i == 4) {
                    [jumpButton5P setImage:[arrayOfButtonImages objectAtIndex:i] forState:UIControlStateNormal];
                }
            }
}

所以在说了这么多之后,图像没有出现在我的 UIButton 上。我已经检查以确保 UIButton 变量与 Interface Builder 中的 UIBUtton 对象连接。但仍然出现问题。

我什至只是尝试了一个简单的

UIImage *btnImage1 = [UIImage imageNamed:@"diagram-P.png"];
[jumpButton1P setImage:btnImage1 forState:UIControlStateNormal];

这甚至不起作用。

希望这一切都有意义.. 任何帮助将不胜感激。

【问题讨论】:

  • 所以我在 UISubView 上加载 UIButtons,这就是给我带来麻烦的原因。我试图找出调用图像以使其工作的最佳时间。如果我在 viewDidLoad 中为 UIButton 分配一个基本图像,它工作得很好。但问题是我必须等待我的 NSDictionary 的信息,这是在加载主视图之后导致麻烦。

标签: ios uiimageview uibutton nsmutablearray


【解决方案1】:

尝试设置 backgroundImage:

[jumpButton1P setBackgroundImage:[UIImage imageNamed:@"diagram-P"] forState:UIControlStateNormal];

【讨论】:

  • bugger.. 刚刚尝试过,但那也不起作用......很痛苦。
  • 尝试在界面生成器中将图像留空,并在代码中需要时设置背景图像
  • 这就是我正在做的事情,如果你在 IB 中查看它,除非你用鼠标选择它,否则你看不到 UIButton。
【解决方案2】:

在Interface Builder中或手动设置按钮类型=“自定义”后再次测试:

  UIButton *btnOne = [UIButton buttonWithType:UIButtonTypeCustom];

然后调用setImage或者setBackgroundImage

希望对你有帮助

【讨论】:

    【解决方案3】:

    听起来不是多余的,但是您是否确认图像对象确实与您的项目相关联?在 Project Navigator 中按下您的项目,选择您的应用目标,按下 Build Phases 选项卡,然后展开“Copy Bundle Resources (x items)”部分。

    另外,请确保您的所有图片都列在那里,并且项目旁边的文件路径正确(指向您的项目,而不是您的桌面/图片文件夹或其他东西)。

    【讨论】:

    • 是的,这些图像在那里并且正在工作。我发现如果我只是将图像应用到 viewdidload 中的按钮,它就可以完美地工作。我认为这是我正在执行的当前方法中的时间问题..实际上我正在获取我用来在主 UIView 加载后做出决定的 NSDictionary 然后我调用我将图像传递给显示在子视图上的正确按钮......我这样做的方式导致了问题
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-02-19
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多