0

こんにちは私はコードを持っている瞬間にボタンを押すとランダムなテキストを生成するアプリを作成していますが、それは正常に動作しますが、アプリを実行して表示されるボタンを押すと変更したいことがいくつかあります:

「よし、ひや、よー、よー、こんにちは、よし、ひや、よー、よー、ひや、こんにちは、こんにちは、よし」

これが最初の13回のクリックであり、アプリにアクセスするたびの順序です。基本的に、2回続けて繰り返さないようにします。また、アプリを起動するときに、異なる順序で開始するようにします。

少なくとも2行のテキストを書きたいのですが、ラベルを使用してそれを行うにはどうすればよいですか?

ここに私が持っているコードがあります:

.h

@interface ViewController1 : UIViewController  {

    IBOutlet UILabel *textview;

}

-(IBAction)random;

.m

@interface ViewController1()

@終わり

@implementation ViewController1

-(IBAction)ランダム{

int text = rand() % 5;

switch (text) {

    case 0:

        textview.text = @"Hello";

        break;

    case 1:

        textview.text = @"hi";

        break;

    case 2:

        textview.text = @"alright";

        break;

    case 3:

        textview.text = @"yoo";

        break;

    case 4:

        textview.text = @"hiya";

        break;

    default:

        break;

}

}

ありがとうございました :)

4

2 に答える 2

1

arc4random()の代わりに関数を使用してくださいrandom()。直面する問題は、関数randを呼び出す前にシードを設定する必要があるためです。これは、 によってバックグラウンドで使用される乱数ジェネレータの開始値ですrand。独自のシードを使用しない場合、それは常に同じデフォルトであるため、常に同じランダム値のシーケンスを取得します。使用する場合arc4random、シードを設定する必要はありません。詳細については、このブログ投稿ドキュメントを参照してください。

#include <stdlib.h>
...
int text = arc4random() % 5;
于 2012-10-11T12:10:26.163 に答える
0
@interface ViewController1 ()

@end

@implementation ViewController1



-(IBAction)random {

    // Pseudocode here
    if (srand() not yet called) then
      srand();
    endif
    // end Pseudocode

    // You are better to put the call to srand() somewhere 
    // it will only ever be called once, rather than having
    // to mess around with an if-statement.

    int text = arc4random() % 50;

    switch (text) {

        case 0:

            textview.text = @"My text here";

            break;

   default:

            break;

    }

}
于 2012-10-18T08:55:31.360 に答える