9つのUIImageViewを表示するアプリがあり、ユーザーがそれらを削除する機能を追加しています。インターフェイスビルダーでのタグの使用に問題があることを除いて、コードは正常に機能します。私のコードは、配列内の位置に基づいてImageView内の画像を削除しているようです。したがって、 UIImageViewが3つある場合は、最初のUIImageViewsタグを1に設定し、2番目の画像ビューのタグを2に設定し、3番目を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のタグはデフォルトのタグであるため、設定できないことはわかっています。したがって、この問題を回避する方法がわかりません。どんな助けでも大歓迎です、ありがとう!