これを行う方法について何日も調査してきましたが、誰も答えがありません。
同じビューに 5 つのタイマーを持つアプリを作成しています。「15:00」(分と秒) からカウントダウンするタイマーと、「2:58」(分と秒) からカウントダウンする別のタイマーを作成する必要があります。15 分のタイマーは繰り返さないようにする必要がありますが、「00:00」に達したときに他のすべてのタイマーを停止する必要があります。「2:58」タイマーは、「15:00」または「ゲーム クロック」が 0 になるまで繰り返す必要があります。現在、ほとんどすべてのコードを廃棄し、「2:58」繰り返しタイマーに取り組んでいますまたは「ロケットタイマー」。
誰もこれを行う方法を知っていますか?
EDIT 2:私のシミュレーターはアプリを実行することさえできないので、現在、タイマーが実際に機能しているかどうかはわかりませんが、以前の試みからは機能していません。希望する形式で表示されず、2 ずつカウントダウンされます (最後に実際に機能したときから)。また、問題は、私が Objective-C に堪能でないことです。他のみんなと同じように、一日中疑似コードを書くことができますが、NSTimer を完全には理解していないため、必要なものをコードに入れることはできません。
編集:
私の出力では、「「NSException」のインスタンスをスローした後に呼び出されて終了します」というエラーが表示されます
そしてこのエラー?
これが私のコードです:
#import <UIKit/UIKit.h>
@interface FirstViewController : UIViewController {
//Rocket Timer
int totalSeconds;
bool timerActive;
NSTimer *rocketTimer;
IBOutlet UILabel *rocketCount;
int newTotalSeconds;
int totalRocketSeconds;
int minutes;
int seconds;
}
- (IBAction)Start;
@end
そして私の.m
#import "FirstViewController.h"
@implementation FirstViewController
- (NSString *)timeFormatted:(int)newTotalSeconds
{
int seconds = totalSeconds % 60;
int minutes = (totalSeconds / 60) % 60;
return [NSString stringWithFormat:@"%i:%02d"], minutes, seconds;
}
-(IBAction)Start {
newTotalSeconds = 178; //for 2:58
newTotalSeconds = newTotalSeconds-1;
rocketCount.text = [self timeFormatted:newTotalSeconds];
if(timerActive == NO){
timerActive = YES;
newTotalSeconds = 178;
[rocketTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(timerLoop) userInfo:nil repeats:YES];
}
else{
timerActive = NO;
[rocketTimer invalidate];
rocketTimer = nil;
}
}
-(void)timerLoop:(id)sender {
totalSeconds = totalSeconds-1;
rocketCount.text = [self timeFormatted:totalSeconds];
}
- (void)dealloc
{
[super dealloc];
[rocketTimer release];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
timerActive = NO;
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end