0

こんにちは、私のアプリケーションの 1 つで、さまざまなセクションを割り当てる必要があり、各セクションにはいくつかのイメージ ビューがあります。そのイメージ タグの値が必要なイメージ ビューでポップオーバーを起動する必要があります。これらの画像タグの値は、0 から始まる count と呼ばれる 1 つの変数を使用したことを区別する必要があります。セクションの数に基づいて増分し、タグ値をイメージビューに次のように割り当てます。

NSString *imageTagStr = [[NSString alloc]initWithFormat:@"%d%d",count,j-1];
image1.tag = [imageTagStr intvalue];

これで、タグ値をイメージビューに割り当てています。これらすべてのイメージビューは、for ループを使用してプログラムで作成されます。

次に、任意のセクション ポップオーバーで使用可能な画像を長押しする必要があります。ポップオーバーが起動したら、ポップオーバーで使用可能なボタンを選択する必要があり、別のビューが表示されます。

そのビューで、配列から取得しているデータをロードします。ここで、imagetag の値に基づいて substringfromindex:1 を意味します。これを使用して、配列で利用可能なデータを取得しています。

ここでの問題は、セクションの数が 9 を超える場合、count が 10 になるため、substringfromindex を使用すると取得していることを意味します (このタグの値の 121 は 1 で、count は 12 であるため、使用可能な配列からオブジェクトを取得するとin 21 は、間違ったデータを取得していることを意味するため、これを修正する必要があります。)

したがって、これを解決するには、ランダムな2桁の数字を生成するのが良いと思います。その数字は、イメージタグ値の情報を追加する必要があります。次に、これは常に2桁になりますが、繰り返されない2桁の数字を生成する方法がわかりません。誰かがアイデアを持っている場合は、私と共有してください。

サンプルコードがあれば、私と共有してください。どうもありがとう。

4

5 に答える 5

2
int intRanIndex = arc4random() % 100;

注:-ランダムな番号が返されます。0 ~ 99 の間.....

于 2012-09-05T09:14:20.177 に答える
0

ここでは乱数は必要ありません。セットする

image1.tag = 256 * count + j;

countその後、あなたは回復することができjます

count = image1.tag / 256;
j = image1.tag % 256;

これはで機能しj < 256ます。の値を大きくする必要がある場合はj、256をより大きな係数に置き換えてください。

于 2012-09-05T09:22:47.583 に答える
0
int min=1;
int max=16;

int randNum = rand() % (max - min) + min;
NSLog(@"random number %i",randNum);
于 2012-09-05T09:16:34.117 に答える
0

カウントに10を加えてみませんか?

NSString *imageTagStr = [[NSString alloc]initWithFormat:@"%d%d", 10+count , j-1];
image1.tag = [imageTagStr intvalue];

これをしたくない場合は、次の回答をご覧になることをお勧めします:繰り返さない乱数

于 2012-09-05T09:17:03.763 に答える
0
int randomIndex = rand() % 10;
NSInteger unrepeated=2147483647;

NSLog(@"randomIndex :- %d",randomIndex);
NSLog(@"arrRandomValue indexOfObject:randomIndex :- %d",[arrRandomValue indexOfObject:[NSString stringWithFormat:@"%d",randomIndex]]);

if ([arrRandomValue indexOfObject:[NSString stringWithFormat:@"%d",randomIndex]]==2147483647)
{
    [arrRandomValue addObject:[NSString stringWithFormat:@"%d",randomIndex]];
    unrepeated=randomIndex;
    NSLog(@"unrepeated random no :- %d",unrepeated);
}

注:- 繰り返されない変数。2147483647 または繰り返されない 0 ~ 9 のランダム値のいずれかが含まれます

また

int randomIndex = rand() % 10;
NSInteger unRepeted=2147483647;

NSLog(@"randomIndex :- %d",randomIndex);
NSLog(@"arrRandomValue indexOfObject:randomIndex :- %d",[arrRandomValue indexOfObject:[NSNumber numberWithInt:randomIndex]]);

if ([arrRandomValue indexOfObject:[NSNumber numberWithInt:randomIndex]]==2147483647)
{
    [arrRandomValue addObject:[NSNumber numberWithInt:randomIndex]];
    unRepeted=randomIndex;
    NSLog(@"un repeted random no :- %d",unRepeted);
}
于 2012-09-05T10:43:19.727 に答える