将 NSButton IBOutlet 名称存储在数组中然后访问数组以在 NSButton 上设置图像时出错
Error storing NSButton IBOutlet name in array then accessing array to setImage on NSButton
请帮忙。我的 window 中有 4 个 NSButton(配置为渐变样式),根据用户输入,我将按钮的颜色设为四种不同颜色之一(通过 setImage 使用 .png 文件)。我的代码运行良好:
if ([[ranColors objectAtIndex:0] isEqualToString:@"red"]) {
[color1 setImage:[NSImage imageNamed:@"Red.png"]];
}
else if ([[ranColors objectAtIndex:0] isEqualToString:@"yellow"]) {
[color1 setImage:[NSImage imageNamed:@"Yellow.png"]];
}
else if ([[ranColors objectAtIndex:0] isEqualToString:@"blue"]) {
[color1 setImage:[NSImage imageNamed:@"Blue.png"]];
}
else {
[color1 setImage:[NSImage imageNamed:@"Green.png"]];
}
我为 4 个按钮(颜色 1、颜色 2、颜色 3 和颜色 4)重复此代码 4 次。 ranColors 是一个保存用户颜色选择的数组。
我试图通过使用 NSArray 来保存按钮 IBOutlet 名称来简化代码:color1、color2、color3 和 color4,然后使用 for 循环遍历 4 个循环。这是代码:
for (int x = 0; x < 4; ++x) {
if ([[ranColors objectAtIndex:x] isEqualToString:@"red"]) {
[[revealPositions objectAtIndex:x] setImage:[NSImage imageNamed:@"Red.png"]];
}
else if ([[ranColors objectAtIndex:x] isEqualToString:@"yellow"]) {
[[revealPositions objectAtIndex:x] setImage:[NSImage imageNamed:@"Yellow.png"]];
}
else if ([[ranColors objectAtIndex:x] isEqualToString:@"blue"]) {
[[revealPositions objectAtIndex:x] setImage:[NSImage imageNamed:@"Blue.png"]];
}
else {
[[revealPositions objectAtIndex:x] setImage:[NSImage imageNamed:@"Green.png"]];
}
}
我收到错误:[__NSCFConstantString setImage:]:无法识别的选择器已发送至实例 0x100006098。当我读取数组元素然后尝试将 setImage 设置为正确的文件时发生错误。看来我无法将按钮的 IBOutlet 名称存储在数组中,然后访问该名称并为其设置 属性。
如有任何帮助,我们将不胜感激。
如果将字符串设置为与文件名相同,则无需循环即可设置所有颜色。
[color1 setImage:[NSImage imageNamed:[NSString stringWithFormat:@"%@.png",[ranColors objectAtIndex:0]]]];
[color2 setImage:[NSImage imageNamed:[NSString stringWithFormat:@"%@.png",[ranColors objectAtIndex:1]]]];
[color3 setImage:[NSImage imageNamed:[NSString stringWithFormat:@"%@.png",[ranColors objectAtIndex:2]]]];
[color4 setImage:[NSImage imageNamed:[NSString stringWithFormat:@"%@.png",[ranColors objectAtIndex:3]]]];
您确定 [revealPositions objectAtIndex:x]
存储了 NSButton
Post 您在该数组中存储 UIButton 的代码以进行说明。
Post 不管成功与否回来。
请帮忙。我的 window 中有 4 个 NSButton(配置为渐变样式),根据用户输入,我将按钮的颜色设为四种不同颜色之一(通过 setImage 使用 .png 文件)。我的代码运行良好:
if ([[ranColors objectAtIndex:0] isEqualToString:@"red"]) {
[color1 setImage:[NSImage imageNamed:@"Red.png"]];
}
else if ([[ranColors objectAtIndex:0] isEqualToString:@"yellow"]) {
[color1 setImage:[NSImage imageNamed:@"Yellow.png"]];
}
else if ([[ranColors objectAtIndex:0] isEqualToString:@"blue"]) {
[color1 setImage:[NSImage imageNamed:@"Blue.png"]];
}
else {
[color1 setImage:[NSImage imageNamed:@"Green.png"]];
}
我为 4 个按钮(颜色 1、颜色 2、颜色 3 和颜色 4)重复此代码 4 次。 ranColors 是一个保存用户颜色选择的数组。
我试图通过使用 NSArray 来保存按钮 IBOutlet 名称来简化代码:color1、color2、color3 和 color4,然后使用 for 循环遍历 4 个循环。这是代码:
for (int x = 0; x < 4; ++x) {
if ([[ranColors objectAtIndex:x] isEqualToString:@"red"]) {
[[revealPositions objectAtIndex:x] setImage:[NSImage imageNamed:@"Red.png"]];
}
else if ([[ranColors objectAtIndex:x] isEqualToString:@"yellow"]) {
[[revealPositions objectAtIndex:x] setImage:[NSImage imageNamed:@"Yellow.png"]];
}
else if ([[ranColors objectAtIndex:x] isEqualToString:@"blue"]) {
[[revealPositions objectAtIndex:x] setImage:[NSImage imageNamed:@"Blue.png"]];
}
else {
[[revealPositions objectAtIndex:x] setImage:[NSImage imageNamed:@"Green.png"]];
}
}
我收到错误:[__NSCFConstantString setImage:]:无法识别的选择器已发送至实例 0x100006098。当我读取数组元素然后尝试将 setImage 设置为正确的文件时发生错误。看来我无法将按钮的 IBOutlet 名称存储在数组中,然后访问该名称并为其设置 属性。
如有任何帮助,我们将不胜感激。
如果将字符串设置为与文件名相同,则无需循环即可设置所有颜色。
[color1 setImage:[NSImage imageNamed:[NSString stringWithFormat:@"%@.png",[ranColors objectAtIndex:0]]]];
[color2 setImage:[NSImage imageNamed:[NSString stringWithFormat:@"%@.png",[ranColors objectAtIndex:1]]]];
[color3 setImage:[NSImage imageNamed:[NSString stringWithFormat:@"%@.png",[ranColors objectAtIndex:2]]]];
[color4 setImage:[NSImage imageNamed:[NSString stringWithFormat:@"%@.png",[ranColors objectAtIndex:3]]]];
您确定 [revealPositions objectAtIndex:x]
存储了 NSButton
Post 您在该数组中存储 UIButton 的代码以进行说明。
Post 不管成功与否回来。