2012-04-04 11 views
0

から画像を削除する、と私は、ユーザーが自分のギャラリーから写真を削除持っているオプションを実装しています。これを達成するために、私は各画像の上に目に見えないボタンを配置することに決めました。ユーザーが「編集」ボタンを押すと、各ピクチャの隠し削除ボタンがアクティブになります。単純化のため、それぞれの隠しボタンに同じIBOutletを使用しています。Interface Builderで各ボタンに適切なタグを付けました。ユーザーが画像上のボタンをタップすると、実際に削除するかどうかを確認する警告ビューが表示されます。 [はい]をクリックすると、removeObjectAtIndexが呼び出されます。私はフォトギャラリーのように振る舞うのアプリに取り組んでいるUI

- (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(別名int)は構造体または共用体ではありません。このコードは配列から画像を削除しますが、UIからも画像を削除する必要があります。そのalertView.tag.imageがトリックを行っているでしょう。私はこれを行う方法を見当がつかない、私はまだObjective-Cのへの新たなんだと私は読んだ本は、このすべてのいずれかをカバーしていません。また、私はUIを更新する可能性がどのように思っていました?画像を削除した後

答えて

1

タグはただNSIntegerです。イメージと呼ばれるプロパティはありません。

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

おかげであなたの答えのためにたくさん、私はそのコードXcodeの状態に追加するときに「プロパティ 'image'は型のオブジェクトには見られないものの、'のUIView * '。(UIImageView *)。私はそれを編集してみましょう。素晴らしい – John

+1

キャスト、それを、あなたの助けてくれてありがとう! – Vignesh

+0

をする – John

1

あなたは存在しないプロパティにアクセスしようとしている:

alertView.tag.image = nil;

をごalertViewUIAlertViewある - とt彼はtagは整数プロパティです。これは、ビューに割り当てたint値を表します(これを行ったと仮定します)。 tagは単なる古いintです - それはプリミティブです。

代わりに、タグの値をとり、イメージを保持するスーパービューでviewWithTagを呼び出します。これにより、必要に応じてremoveFromSuperviewにイメージビューへの参照が渡されます。

+0

ありがとうございます。 '[alertView.tag removeFromSuperview];'のように見えますか?初心者の質問には申し訳ありません。 – John

+0

ん - それは '[[self.view viewWithTag:alertView.tag] removeFromSuperview]されるだろう'、*あなたのイメージがself.view' 'に追加されている*想定していません。しかし、アップルのドキュメンテーションをより詳細に、特にビュー階層の仕組みを見て恩恵を受けるように思えるかもしれません。彼らはいくつかの素晴らしいサンプルコードを持っています、それはよく調べる価値があります。 – lxt

0

どのようにイメージをUIに追加しますか? UIImageViewのイメージを別のイメージに設定するか、ビューから削除します。

あなたは.tag.imageを追加することはできません。タグは、(他のものの中でも)他のものからの1つのビューを示すために使用される整数インスタンスフィールドです。タグそのもの、その値以外のプロパティはありません。

関連する問題