0

iPhoneアプリ初心者です。ボタンが押されたときに2秒ごとにメッセージを表示したい そのために、このコードを使用しています。

このコードは一度だけ機能します。つまり、電話は 1 回だけです。この問題を解決するのを手伝ってくれませんか。

-(IBAction)fortunecookieAction:(id)sender
{
    [self performSelector:@selector(showfortune) withObject:nil afterDelay:2.0];
}

-(void)showfortune
{
    int number=arc4random()%5;
    switch (number) {
        case 0:
            fortunelabel.text=@"A holiday takes you back to the summer of '69";
            break;
        case 1:
            fortunelabel.text=@"A meal turns erotic muffin";
            break;
        case 2:
            fortunelabel.text=@"A massage brings";
            break;
        case 3:
            fortunelabel.text=@"A letter in the pa special delivery";
            break;
        case 4:
            fortunelabel.text=@"A spillage tuoo";
            break;

        default:
            break;  
    }   
}
4

2 に答える 2

0

その関数を 2 秒ごとに呼び出したい場合は、NSTimerを使用します。スケジュールされたタイマーを作成
する必要がありますscheduledTimerWithTimeInterval:target:selector:userInfo:repeats:

于 2011-09-15T11:00:54.713 に答える
0

あなたの最善の策は、おそらくを使用することNSTimerです。2 秒ごとにアクション メソッドを呼び出すように設定するのは非常に簡単です。

インターフェイス ( MyViewController.h) で、NSTimer プロパティを宣言します。

@interface MyViewController : UIViewController

@property (nonatomic, retain) NSTimer *myTimer;

@end


そして、あなたの実装では:

@synthesize myTimer;

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSTimer *newTimer = [NSTimer scheduledTimerWithTimeInterval:2.0f target:self selector:@selector(repeatingTimerFired:) userInfo:nil repeats:YES];
    self.myTimer = newTimer;
    [newTimer release];
}

- (void)viewDidUnload
{
    [super viewDidUnload];

    if ([myTimer isValid]) {
        [myTimer invalidate];
    }    
}

- (void)dealloc
{
    [myTimer release], myTimer = nil;

    [super dealloc];
}

- (void)repeatingTimerFired:(NSTimer *)sender
{
    int number=arc4random()%5;
    switch (number) {
        case 0:
            fortunelabel.text=@"A holiday takes you back to the summer of '69";
            break;
        case 1:
            fortunelabel.text=@"A meal turns erotic muffin";
            break;
        case 2:
            fortunelabel.text=@"A massage brings d";
            break;
        case 3:
            fortunelabel.text=@"A letter in the pa special delivery";
            break;
        case 4:
            fortunelabel.text=@"A spillage tuoo";
            break;

        default:
            break;
}

ユーザーがボタンを押した後にこのタイマーがメッセージの表示を開始するようにするには、タイマーの作成をボタン アクション メソッドに移動するだけです。

于 2011-09-15T11:01:03.297 に答える