0

ビューコントローラには10個のオプションがあり、それぞれが特定の数のボタンを表示する同じ新しいビューコントローラに「プッシュ」します(オプションごとに、3ボタンから15ボタンまでの異なる数のボタンを使用できます)。現在、私のコードは、この質問に投稿された回答と同様に機能しています。

これらのボタンはすべて、forループを使用してオプションごとに動的に作成されます(量は明らかに配列の長さに依存します)。

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender
{
    if(option 1) {
    Array contains different values...
    }

    if(option 2) {
    Array contains different values...
    }

    etc...

    for(int i = 0; i < xCoordinatePosition.count; i++) {
       UIButton *imageOne = [UIButton buttonWithType:UIButtonTypeCustom];
       [imageOne setTag:i];
       [imageOne addTarget:self action:@selector(webViewChanged:) forControlEvents:UIControlEventTouchUpInside];
    }
}

ご覧のとおり、動的に作成されたボタンを区別するために、ボタンごとにタグを設定しましたUIWebView。選択したときにボタンごとに異なる表示が必要なためです。

オプションを選択し、結果ページの各ボタンの結果のタグをNSLogすると、1、2、3などの応答が返されます。

- (IBAction)webViewChanged:(UIButton*)sender
{
    NSLog(@"%d", sender.tag);
}

問題は、すべてのオプションボタンに関してボタンごとに一意の番号が必要なことです。現在、10個のオプションのそれぞれが、タグ1、2、3などのタグが最大10個あるボタンで返されますが、最初のオプションは返される必要があります。 1〜10の場合、2番目のオプションは11〜20などで返されます。これは、個々のボタンがそれぞれ固有のものを返すためです。

例えば:

あるオプションで7のタグが付いたボタンをクリックすると、別のオプションで7のタグが付いたボタンをクリックすると、まったく異なるWebビューが表示されるため、すべてのボタンを区別する必要があります。

(現在選択されているオプションの各ボタンを現在のように一意に設定するのではなく)各オプションに一意になるようにタグを設定する方法を知っている人はいますか?

4

2 に答える 2

2

10 の倍数の値を持つ別の integerVariable を使用するだけです。

int factor;
if(option 1)
{
   factor = 0;
}
if(option 2)
{
   factor = 10;
} 
etc..

次に、次のようにタグを付けます。

[imageOne setTag:i+factor];
于 2013-03-05T16:26:37.467 に答える
1

あなたの質問を正しく理解した場合、問題を解決する 1 つの方法は、100、200 などの各オプションにベース タグを設定することです。

だから、あなたのprepareForSegue

int baseTag;

if(option 1) {
  // Array contains different values...
  baseTag = 100;
}

if(option 2) {
  // Array contains different values...
  baseTag = 200;
}

// etc...

for ループでは、単純に次のようにします。

[imageOne setTag: baseTag + i];

オプション 1 の場合、イメージ タグは 101 から始まり、オプション 2 の場合は 201 などになります。

于 2013-03-05T16:28:31.750 に答える