0

たくさんの画像をUIScrollViewに読み込んでから、サイズを変更してそれぞれの上にボタンを配置します。小さい画像の上にあるボタンをクリックすると、新しいビューにフルサイズの画像が読み込まれます。

ボタンがクリックされたときに、画像のURLをパラメーターとしてクリックハンドラーに渡すための適切な方法を見つけるのに苦労しています。私が読んだものから、パラメーターをコールバック関数に渡すことはできません。

これが私がこれまでに持っているコードです、

for(Card *card in crd){

    pocketImage = [self imageWithImage:[UIImage imageNamed:@"pocket.png"] scaledToSize:CGSizeMake(245/2,80/2)];
    pocketImageView = [[UIImageView alloc] initWithImage:pocketImage];

    cardImage =  [self maskImage:[UIImage imageNamed:@"animal.jpg"]];
    cardImageView = [[UIImageView alloc] initWithImage:cardImage];

    y = (80/2) * inc;

    if (inc % 2){
        x = 125;
    } else {
        x = 10;
        y += (80/2);
    }

    UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
    [btn addTarget:self action:@selector(testMe) forControlEvents:UIControlEventTouchUpInside];
    [btn setFrame:CGRectMake(x,y-40,pocketImageView.frame.size.width,pocketImageView.frame.size.height*2)];

    [pocketImageView setFrame:CGRectMake(x,y,245/2,80/2)];
    [cardImageView setFrame:CGRectMake(x,y-40,245/2,80/2)];

    //add the pocketImageView to the container
    [imageContainer addSubview:cardImageView];
    [imageContainer addSubview:pocketImageView];
    [imageContainer addSubview:btn];

    inc++;
}

コールバック関数、

-(void)testMe {
    NSLog(@"works");
}

つまり、基本的には、すべての画像をループしてから、すべてをに追加するだけですUIScrollView。これは正常に機能します。カスタムパラメータをメソッドに渡そうとすると問題が発生しますがtestMe、これは私が知る限り不可能です。では、ボタンをクリックして、対応するフルサイズの画像を新しいビューで表示するにはどうすればよいでしょうか。

4

2 に答える 2

0

これには、iVar /(private)@propertyを使用できます。

利用可能にしたいデータを次のように設定するだけです。

myTransferVariable = // something you need in you testMe method

このように使用します

-(void)testMe {
    NSLog(@"%@", myTransferVariable);
}
于 2012-10-17T13:40:35.713 に答える
0

- (void)testMe:(id)sender {アクションをとして定義し、として指定できるはずです@selector(testMe:)。次に、各ボタンに(たとえば)URL文字列の配列へのオフセットであるタグを付けると、メソッドはを使用して、選択したボタンに一致するURLを見つけることができるはず((UIButton *)sender).tagです。

于 2012-10-17T13:48:02.043 に答える