0

更新 1

dealCard条件を in の代わりに in にすることで、ループが止まらない問題を修正しましたstartPause

更新 1

更新 0

- (IBAction)startPause: (UIButton *)sender{
    NSString *buttonTitle = sender.currentTitle;
    if ([buttonTitle isEqualToString: @"Pause"]) {

        [self.myButton setTitle:@"Resume" forState:UIControlStateNormal];
        [timer invalidate];
    }
    else
    {
        [self.myButton setTitle:@"Pause" forState:UIControlStateNormal];
        if ([self.deal length]>cardNum) {
            timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                     target:self
                                                   selector:@selector(dealCard)
                                                   userInfo:nil
                                                    repeats:YES];
        }
        else
            [timer invalidate];

    }
}

上記の修正されたコードに加えて、複数の人が提案したように のIBOutletプロパティを追加し、をから に変更し、 からの呼び出しを削除しました。これで、「while」条件の失敗によって句内の が適切に無効にされないことを除いて、システムは機能しているように見えます。myButtonNSTimerrepeats:YESrepeats:NO[self startPause]dealCardself.deal length]>cardNumNSTimerelse

その無効化が発生しない理由についてのフィードバックを使用できます。

更新 0

この回答済みの質問を続けて、「startPause」UIButton の「Pause」部分を追加しようとしています。ボタンがタップされた後、そのタイトルとアクションを「一時停止」にし、そのタイトルを「再開」と「一時停止」の間で切り替えます。

ボタンはストーリーボードで作成されますが、ボタンの識別子を作成する方法が思いつかないので、プログラムで変更できます。IBAction「送信者」を含むようにボタンのメソッドを強化する必要があると思いますが、私は道を外れているかもしれません。

現在、次の未完成のコードがあります。

- (IBAction)startPause: (UIButton *)sender{
    NSString *buttonTitle = sender.currentTitle;
    if ([buttonTitle isEqual: @"Pause"]) {
    [myButton setTitle:@"Resume" forState:UIControlStateNormal];   //**** myButton is what?     

    if ([self.deal length]>cardNum) {
        timer = [NSTimer scheduledTimerWithTimeInterval:1.0
                                                 target:self
                                               selector:@selector(dealCard)
                                               userInfo:nil
                                                repeats:NO];
    }
    }
}

(コードの「else」部分を開始していないことはわかっています。)

ストーリーボードのボタンでmyButton上記を接続するにはどうすればよいですか?startPause

4

2 に答える 2

1

あなたのメソッドのsenderパラメータはあなたが望むものでなければならないので、おそらく直接変更することで逃げることができます. つまり、コード スニペットで を置き換えます。startPauseUIButtonsendermyButtonsender

別の方法として、他の場所から一時停止/再開した場合でも、ボタンを取得してタイトルを更新できるという利点があるIBOutletため、ボタンの を作成します。クラス@interfaceセクションには、次のようなものがあります。

@property (nonatomic, strong) IBOutlet UIButton *pauseResumeButton;

self.pauseResumeButtonボタンを参照する場合は、またはを使用できます_pauseResumeButton

于 2013-06-12T20:25:02.613 に答える