我正在使用switch语句随机填充带有图片的imageviews。 现在我试图给图片一个值。这样我可以使用该值进行比较。有人可以解释一下如何给图像赋值吗?
我使用以下代码为UIImages设置数组,但无法完全正常工作:(。m file)
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
UIImage *image1 = [UIImage imageNamed:@"image-1.png"];
UIImage *image2 = [UIImage imageNamed:@"image-2.png"];
UIImage *image3 = [UIImage imageNamed:@"image-3.png"];
UIImage *image4 = [UIImage imageNamed:@"image-4.png"];
UIImage *image5 = [UIImage imageNamed:@"image-5.png"];
_imageArray = @[image1, image2, image3, image4, image5];
}
-(void)displayImageRandomlyOnView {
NSUInteger randomIndex = arc4random_uniform([_imageArray count]);
_imageToDisplay.image = [_imageArray objectAtIndex:randomIndex];
}
在.h文件中也创建了一个按钮,用于调用视图...但无法获取调用该视图的按钮的代码。 如果我现在尝试运行IS,即使没有按钮,它也会崩溃。有人能告诉我出了什么问题吗?
以下信息位于.h文件中:(已将按钮退出)
#import <UIKit/UIKit.h>
@interface ViewController : UIViewController
@property (weak, nonatomic) IBOutlet UIImageView *imageToDisplay;
@property (strong, nonatomic) NSArray *imageArray;
这真的很有帮助!我现在创建了一个按钮,它将填充总共10个UiImage视图。在屏幕左侧5,UiImage视图1-5和右侧我有UiImage视图6-10。我创建了两个separe数组来填充右侧和左侧。我现在唯一想做的就是将UiImage视图1-5与6-10进行比较。如果UiImage视图用图像填充它应该返回值1,如果不是,它应该有0.这样我可以比较右侧或左侧是否填充了更多图像或完全相同。你能指出我如何做到这一点的正确方向吗?谢谢!
答案 0 :(得分:0)
我建议将UIImages存储在一个数组中,随机排序,然后依次用图像填充UIImageViews。这样,您不需要为图像附加值,因为您知道它们在图像视图中的位置在阵列中的位置。
修改强>
您应该替换
行_imageArray = @[image1, image2, image3, image4, image5];
与
_imageArray = [[NSArray alloc] initWithObjects:image1, image2, image3, image4, image5, nil];
你有什么会在Xcode控制台中导致这样的错误: *由于未捕获的异常'NSInvalidArgumentException'而终止应用程序,原因:'* - [__ NSPlaceholderArray initWithObjects:count:]:尝试从对象[0]中插入nil对象
编辑26/11/13
如果你在屏幕上有一个图像列表,并且想要以编程方式检查它们是否加载了图像,我建议使用UIImageViews数组而不是UIImages数组。然后,
// Initialise the 5 UIImageViews with the UIImages that you already initialised.
UIImageView *image1 = [[UIImageView alloc] initWithImage:image1];
UIImageView *image2 = [[UIImageView alloc] initWithImage:image2];
..
..
UIImageView *image5 = [[UIImageView alloc] initWithImage:image1];
// Put all the UIImageViews in an array.
_imageArray = [[NSArray alloc] initWithObjects:image1, image2, image3, image4, image5, nil];
// Make this method to count the number of images in the given array.
- (int)numberOfImagesIn:(NSArray *)array {
int count = 0;
for (UIImageView *view in array) {
if (view.image) {
count++;
}
}
return count;
}