我在代码中创建了两个UIImageView
:
UIImageView *background = [[UIImageView alloc]initWithFrame:CGRectMake(150, 60, 180, 180)];
UIImageView *result = [[UIImageView alloc]initWithFrame:CGRectMake(150, 60, 180, 180)];
[self.view addSubview:background];
[self.view addSubview:result];
[self.view insertSubview:result aboveSubview:background];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[background setImage:[UIImage imageNamed:[defaults objectForKey:@"colour"]]];
当您按下按钮时,将执行以下代码:
- (IBAction)oneToSix {
int rNumber = (arc4random() % 6) + 1;
[result setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d", rNumber, @".png"]]];
}
但图像没有变化。
另外,我收到了这些错误:
答案 0 :(得分:4)
您正在重新声明已在类范围中定义的方法范围中的变量。从初始化中删除UIImageView *
部分。
注意:更改图像时它什么都不做,因为在ObjectiveC中,对nil(未初始化的实例成员)的方法调用是有效的,并且不会产生任何可见的结果。
答案 1 :(得分:1)
[result setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d", rNumber, @".png"]]];
请注意,您只是将数字放入该字符串中。您需要%d%@
作为格式。
这些不是错误,而是警告。您的类中有一个名为background
的实例变量。您还在方法中声明了一个名为background
的局部变量。警告是让你知道存在冲突并且它正在选择实例变量的局部变量。
答案 2 :(得分:0)
图片是Red
还是Red.png
?因为如果是后者,您应该在setImage
方法中附加文件扩展名,例如[NSString stringWithFormat:@"%@.png", [defaults objectForKey:"colour"]]
此外,您要插入result
imageView两次。删除第一个。