更新 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」条件の失敗によって句内の が適切に無効にされないことを除いて、システムは機能しているように見えます。myButton
NSTimer
repeats:YES
repeats:NO
[self startPause]
dealCard
self.deal length]>cardNum
NSTimer
else
その無効化が発生しない理由についてのフィードバックを使用できます。
更新 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