iOS: UIImageView Issues



我是Objective-C的新手,有一些初学者的问题。我有一个应用程序,它有一个区域,应该表现得有点像照片库。单击"添加图像"按钮,从相机胶卷中选择的图像将进入UIImageView。这是我正在使用的代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
    imageView.image = img;
    [[picker parentViewController] dismissModalViewControllerAnimated:YES];
}

现在,我添加了多个UIImageView,这样他们就可以单击"添加图像",每次他们从相机胶卷中选择图像时,图像都会显示在下一个可用的UIImageView中。这就是我遇到问题的地方。我不知道如何做到这一点,但这是我一直试图用来实现这一点的代码:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
    if (imageView == nil) {
        imageView.image = img;
        [[picker parentViewController] dismissModalViewControllerAnimated:YES];
    }
    if (imageView2 == nil) {
        imageView2.image = img;
        [[picker parentViewController] dismissModalViewControllerAnimated:YES];
    }
    if (imageView3 == nil) {
        imageView3.image = img;
        [[picker parentViewController] dismissModalViewControllerAnimated:YES];
    }
}

我有两个问题。第一个问题是,这个版本的代码根本没有像我发布的第一个版本的代码那样添加图像。我怀疑这是因为imageView的值由于某种原因不等于零。我不知道该怎么解决。第二个问题是,如果该代码有效,所有UIImageView都将显示图片,而不仅仅是下一个可用的UIImageView。我试着在每个if语句后面加上"break;",但这当然会导致错误,因为这不是一个循环。非常感谢任何帮助或建议,谢谢!

您正在检查imageView是否为nil,而不是它包含的图像。此外,您希望从函数返回,而不是中断循环。试试这个:

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
    if (imageView.image == nil) {
        imageView.image = img;
        [[picker parentViewController] dismissModalViewControllerAnimated:YES];
        return;
    }
    if (imageView2.image == nil) {
        imageView2.image = img;
        [[picker parentViewController] dismissModalViewControllerAnimated:YES];
        return;
    }
    if (imageView3.image == nil) {
        imageView3.image = img;
        [[picker parentViewController] dismissModalViewControllerAnimated:YES];
        return;
    }
}

您正在运行的代码会将任何空imageView的图像设置为所选图像。试试这个。

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
    if (imageView.image == nil) {
        imageView.image = img;
        [[picker parentViewController] dismissModalViewControllerAnimated:YES];
    }
    else if (imageView2.image == nil) {
        imageView2.image = img;
        [[picker parentViewController] dismissModalViewControllerAnimated:YES];
    }
    else if (imageView3.image == nil) {
        imageView3.image = img;
        [[picker parentViewController] dismissModalViewControllerAnimated:YES];
    }
}

最新更新