1

UIImageViewを作成し、ユーザーがライブラリから画像を選択できるようにするボタンがあります。

また、「amount」と呼ばれる変数として1ずつ増加します。

彼がもう一度ボタンを押すと、同じことをします。彼がそれを押すのと同じくらい何度も。

    -(void)imagePickerController:(UIImagePickerController *)picker
didFinishPickingMediaWithInfo:(NSDictionary *)info
{



    UIImageView *subView;    
    CGRect frame = CGRectMake(60, 100, 200, 200);
    subView = [[UIImageView alloc] initWithFrame:frame];



    NSString *mediaType = [info
                           objectForKey:UIImagePickerControllerMediaType];
    [self dismissModalViewControllerAnimated:YES];
    if ([mediaType isEqualToString:(NSString *)kUTTypeImage]) {
        UIImage *image = [info 
                          objectForKey:UIImagePickerControllerOriginalImage];


        subView.image = image;
        if (newMedia)
            UIImageWriteToSavedPhotosAlbum(image, 
                                           self,
                                           @selector(image:finishedSavingWithError:contextInfo:),
                                           nil);
    }
    else if ([mediaType isEqualToString:(NSString *)kUTTypeMovie])
    {
        // Code here to support video if enabled
    }

    [self.view addSubview:subView];  
    amount += 1;

    NSLog(@"%d", amount);
}

後で参照できるように、各サブビューに一意の名前(subView1、subView2、subView3 .......など)を付ける必要があります。

どうすればそれらを一意に識別できますか?

4

4 に答える 4

2

名前を付けることはできません。後でそれらを簡単に識別するためのオプションがいくつかあります。

1 つ目は、名前を格納するプロパティをサブクラス化UIVIewして追加することです。NSString次に、親ビューのサブビューを反復処理し、見ているサブビューが新しいサブクラスのものであることを確認してから、その名前を確認します。この方法の主な利点は、必要な識別データをサブビューに含めることができることです。欠点は、クラスの型などをチェックする必要があることです...少し不格好ですが、多くの場合、より優れたコーディングです。

もう 1 つのオプションは、UIViewのタグ プロパティを使用することNSIntegerです。各サブビューに独自のタグを付けることができます。このシステムの 2 つの利点: に組み込まれてUIViewおり、親ビューのviewWithTagメソッドを使用して特定のサブビューを見つけることができます (ただし、タグはデフォルトでは一意ではなく、同じタグを複数のサブビュー)。

于 2012-10-03T19:54:06.203 に答える
1

tag プロパティを使用できます

[subview setTag:999];

...を使用してサブビューにアクセスしますviewWithTag

[self.view bringSubviewToFront:[subview viewWithTag:999]];
于 2012-10-03T19:43:55.303 に答える
1

すべてのビューには、 と呼ばれる NSInteger プロパティがありますtag

subview.tag = amount;

後で、特定のサブビューを参照する必要がある場合:

referencedSubview = [self.view viewWithTag:x];
if (referencedSubview != nil) {
 //do whatever
} else {
 //No subview with this tag
}
于 2012-10-03T19:45:33.187 に答える
1

を使用して、変数からNSMutableDictionaryを作成することができます。次に、この名前をビューのキーとして使用します。これにより、タグの番号付けとの潜在的な競合が発生しないことが保証され、必要に応じて、ビュー階層全体でビューを追跡することもできます。NSStringamount[NSString stringWithFormat:@"view%d",amount]

于 2012-10-03T19:49:46.543 に答える