removeObject
を私の方法の1つに呼び出す必要がありますが、これを正しく行う方法を理解できません。私はObjective-Cの新機能であり、基本を学んでいます。私は写真ギャラリーのように振る舞い、UIImageViewsを表示するアプリを持っています。私はユーザーが自分のギャラリーから写真を削除するオプションを実装しています。これを達成するために、私は各画像の上に目に見えないボタンを配置することに決めました。ユーザーが「編集」ボタンを押すと、各画像上の隠し削除ボタンがアクティブになります(わかりやすくするため、各隠しボタンに同じIBOutletを使用しています)。ユーザーが画像上のボタンをタップすると、実際に削除するかどうかを確認する警告ビューが表示されます。彼らは[はい]をクリックした場合、deleteAlertViewが場に出た:iOS:簡易NSMutableArrayコール
- (void)deleteAlertView:(UIAlertView *)deleteButtonPressed
didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (buttonIndex != [deleteButtonPressed cancelButtonIndex]) {
[array removeObject:@"%@", deleteButtonPressed];
}
ここでの問題タップされた配列内のオブジェクトを、私はこれは自動的%の@を決定しますなかったよう[array removeObject:@"%@", deleteButtonPressed];
ではなく、手動で新しい方法を入れています各UIImageViewのボタン(私はそれをやり終わらなければならないかもしれません)。私は "配列"と "deleteButtonPressed"(宣言されていない識別子の使用)に関するエラーを取得している、私は私の人生の代わりに何を置くかを把握することはできません。私はまだ基礎を学び、この言語の継承がどのように機能しているのですか?どんな助けや助言も素晴らしいでしょう!私はおそらく関連の継承を示すために、全体のビューコントローラファイルを投稿する必要があります
- (IBAction)grabImage {
self.imgPicker = [[UIImagePickerController alloc] init];
self.imgPicker.delegate = self;
self.imgPicker.sourceType = UIImagePickerControllerSourceTypePhotoLibrary;
if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
_popover = [[UIPopoverController alloc] initWithContentViewController:imgPicker];
[_popover presentPopoverFromRect:self.imageView.bounds inView:self.imageView permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
else {
[self presentModalViewController:imgPicker animated:YES];
}
[self.imgPicker resignFirstResponder];
}
// Sets the image in the UIImageView
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
if (imageView.image == nil) {
imageView.image = img;
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
if (imageView2.image == nil) {
imageView2.image = img;
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
if (imageView3.image == nil) {
imageView3.image = img;
[picker dismissModalViewControllerAnimated:YES];
[self.popover dismissPopoverAnimated:YES];
return;
}
}
- (void)viewWillAppear:(BOOL)animated
{
self.user = [NSUserDefaults standardUserDefaults];
NSMutableArray* array = [[self.user objectForKey:@"images"]mutableCopy];
while(array == nil)
{
[self.user setObject:[NSMutableArray arrayWithObject:@""] forKey:@"images"];
array = [[self.user objectForKey:@"images"]mutableCopy];
NSLog(@"%@",@"attempting to create an array to store the images in");
}
}
- (void)applicationDidEnterBackground:(UIApplication*)application {
NSLog(@"Image on didenterbackground: %@", imageView);
NSMutableArray* array = [NSMutableArray arrayWithObject:[NSData dataWithData:UIImagePNGRepresentation(imageView.image)]];
[array addObject:[NSData dataWithData:UIImagePNGRepresentation(imageView2.image)]];
[array addObject:[NSData dataWithData:UIImagePNGRepresentation(imageView3.image)]];
[self.user setObject:array forKey:@"images"];
[user synchronize];
}
- (void)viewDidLoad
{
self.user = [NSUserDefaults standardUserDefaults];
NSLog(@"It is %@", self.user);
NSMutableArray* array = [[self.user objectForKey:@"images"]mutableCopy];
imageView.image = [[UIImage alloc] initWithData:[array objectAtIndex:0]];
imageView2.image = [[UIImage alloc] initWithData:[array objectAtIndex:1]];
imageView3.image = [[UIImage alloc] initWithData:[array objectAtIndex:2]];
UIApplication *app = [UIApplication sharedApplication];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(applicationDidEnterBackground:)
name:UIApplicationDidEnterBackgroundNotification
object:app];
backToGalleryButton.hidden = YES;
tapToDeleteLabel.hidden = YES;
deleteButton1.hidden = YES;
[super viewDidLoad];
}
- (IBAction)deleteButtonPressed:(id)sender {
UIAlertView *deleteAlertView = [[UIAlertView alloc] initWithTitle:@"Delete"
message:@"Are you sure you want to delete this photo?"
delegate:self
cancelButtonTitle:@"Yes"
otherButtonTitles:@"No", nil];
[deleteAlertView show];
}
- (void)deleteAlertView:(UIAlertView *)deleteButtonPressed
didDismissWithButtonIndex:(NSInteger)buttonIndex {
if (buttonIndex != [deleteButtonPressed cancelButtonIndex]) {
[array removeObject:@"%@", deleteButtonPressed];
}
}
このコードには多くの問題がありますが、コンソールに投稿された実際のエラーを投稿することはできますか? – sosborn
はい、唯一のエラーは "宣言されていない識別子' array'の使用です。 "副作用と同様に、私のコードで何が間違っていますか? (テーブルビューを使用していない以外の)? – John