我有一个显示 9 个 UIImageViews 的应用程序,并且我正在添加用户删除它们的功能。该代码工作正常,除了我在界面生成器中使用标签时遇到一些问题。似乎我的代码根据其在数组中的位置删除了 ImageView 中的图像。所以,如果我有 3 个 UIImageViews,我会将第一个 UIImageViews 标记设置为 1,第二个图像视图的标记设置为 2,第三个设置为 3。我尝试先删除第三个,然后我收到错误: 终止应用程序到期未捕获的异常 NSRangeException,原因: * '-[__NSArrayM removeObjectAtIndex:]: 索引 3 超出范围 [0 .. 1]'
这是我正在使用的代码:
- (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]);
NSLog(@"The tag is %i", alertView.tag);
[self.array removeObjectAtIndex: alertView.tag];
NSLog(@"After deleting item, array count = %d", [array count]);
NSLog(@"Returned view is :%@, in view: %@", [self.view viewWithTag:alertView.tag], self.view);
((UIImageView *)[self.view viewWithTag:alertView.tag]).image =nil;
}
[self.user setObject:self.array forKey:@"images"];
}
我必须将第一个图像放在数组的 0 索引中,但我知道你不能有 0 标记,因为它是默认标记。所以,我不知道如何解决这个问题。非常感谢任何帮助,谢谢!