从UI中删除图像

时间:2012-04-04 15:54:45

标签: objective-c ios xcode image

我正在开发一个行为类似照片库的应用,我正在实施让用户从其图库中删除照片的选项。为了做到这一点,我决定在每张照片上放置一个隐形按钮。当用户点击“编辑”按钮时,每张图片上的隐藏删除按钮变为活动状态。为简单起见,我在每个隐藏按钮上使用相同的IBOutlet,并且我在Interface Builder中适当地标记了每个按钮。当用户点击图片上的按钮时,会出现警告视图,询问他们是否确实要删除它。如果他们单击是,我调用removeObjectAtIndex。这是我正在使用的代码:

- (IBAction)deleteButtonPressed:(id)sender {
    NSLog(@"Sender is %@", sender);
    UIAlertView *deleteAlertView = [[UIAlertView alloc] initWithTitle:@"Delete"
                                                              message:@"Are you sure you want to delete this photo?"
                                                             delegate:self
                                                    cancelButtonTitle:@"No"
                                                    otherButtonTitles:@"Yes", nil];
    [deleteAlertView show];
    int imageIndex = ((UIButton *)sender).tag;
    deleteAlertView.tag = imageIndex;

}

- (void)alertView: (UIAlertView *) alertView 
clickedButtonAtIndex: (NSInteger) buttonIndex
{


    if (buttonIndex != [alertView cancelButtonIndex]) {
        NSLog(@"User Clicked Yes. Deleting index %d of %d", alertView.tag, [array count]);

        [self.array removeObjectAtIndex: alertView.tag];
        NSLog(@"After deleting item, array count  = %d", [array count]);
        alertView.tag.image = nil;
    }

    [self.user setObject:self.array forKey:@"images"];
}

此处的问题是alertView.tag.image。我有一个错误,指出“成员引用基类型NSInteger(aka int)不是结构或联合。这个代码删除了数组中的图像,但我仍然需要从UI中删除图像。我想那个alertView.tag.image会做到这一点。我不知道怎么做,我还是Objective-C的新手,我读过的这本书根本不涉及任何这个。我也想知道我是怎么做的可以在删除图像后刷新UI吗?

3 个答案:

答案 0 :(得分:1)

您正在尝试访问不存在的属性:

alertView.tag.image = nil;

您的alertViewUIAlertView - tag是一个整数属性,表示您为视图指定的int值(假设您已经这样做了)。 tag只是一个普通的旧int - 它是一个原始的。

您需要做的是获取标记值并在保存图像的超级视图上调用viewWithTag:这将为您提供图像视图的引用,然后您可以removeFromSuperview为必需的。

答案 1 :(得分:1)

标签只是NSInteger。它没有称为图像的属性。你应该使用,

((UIImageView *)[self.view viewWithTag:alertView.tag]).image =nil;

答案 2 :(得分:0)

如何将图像添加到UI?将UIImageView中的图像设置为另一个图像或从视图中删除它。

您无法在.image之后添加.tag。 Tag是一个整数实例字段,用于表示另一个视图(以及其他内容)。标记本身,除了其值之外没有任何属性。