0

私はフォトギャラリーのように動作するアプリに取り組んでおり、ユーザーにギャラリーから写真を削除させるオプションを実装しています。これを実現するために、各画像の上に非表示のボタンを配置することにしました。ユーザーが「編集」ボタンを押すと、各画像の非表示の削除ボタンがアクティブになります。わかりやすくするために、非表示の各ボタンに同じIBOutletを使用しており、InterfaceBuilderで各ボタンに適切なタグを付けています。ユーザーが画像の上にあるボタンをタップすると、本当に画像を削除するかどうかを尋ねるアラートビューが表示されます。[はい]をクリックした場合は、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(別名int)は構造体または共用体ではありません。このコードは配列から画像を正常に削除しますが、UIからも画像を削除する必要があります。」というエラーが表示されます。これをalertView.tag.image行う方法がわからないので、Objective-Cはまだ初めてで、読んだ本ではこれについてまったく説明していません。また、後でUIを更新するにはどうすればよいか疑問に思いました。画像を削除しますか?

4

3 に答える 3

1

存在しないプロパティにアクセスしようとしています。

alertView.tag.image = nil;

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

代わりに行う必要があるのは、タグ値を取得してviewWithTag、画像を保持しているスーパービューを呼び出すことです。これにより、画像ビューへの参照が提供さremoveFromSuperviewれ、必要に応じて参照できます。

于 2012-04-04T15:59:08.173 に答える
1

タグはNSIntegerです。imageというプロパティはありません。使用する必要があります、

((UIImageView *)[self.view viewWithTag:alertView.tag]).image =nil;
于 2012-04-04T15:59:18.370 に答える
0

UIに画像をどのように追加していますか?UIImageViewの画像を別の画像に設定するか、ビューから削除します。

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

于 2012-04-04T16:00:04.600 に答える