Countdown-timer mit NSTimer in "0:00" format

Recherchiere ich seit Tagen auf, wie Sie dies tun und niemand hat eine Antwort.

Ich bin erstellen einer app mit 5 Timer auf die gleiche Ansicht.
Ich brauche erstellen einen timer, der nach unten zählt von 15:00" (Minuten und Sekunden), und andere, die nach unten zählt von "2:58" (Minuten und Sekunden). Der 15-Minuten-timer soll sich nicht wiederholen, aber es sollte aufhören, alle anderen Timer bei erreichen von "00:00 Uhr." Die "2:58" timer sich wiederholen soll, bis die "15:00" oder "Spiel-Uhr" den Wert 0 erreicht. Jetzt habe ich verschrottet, fast alle von meinem code, und ich bin auf die "2:58" wiederholende timer " oder "rocketTimer."

Weiß jemand, wie dies zu tun?

EDIT 2:
Mein simulator läuft nicht einmal die app, da ich derzeit keine Ahnung, ob der timer tatsächlich funktioniert oder nicht, aber aus meiner früheren versuche, es nicht geklappt hat. Es nicht zeigen, bis in dem format, das ich will und es zählt von 2 (aus der letzten Zeit, es hat tatsächlich funktioniert). Das problem ist auch, dass ich bin nicht fließend in objective-C. ich kann schreiben pseudocode ganzen Tag, wie jeder andere auch, aber ich kann nicht was ich möchte in code, weil ich nicht vollständig verstehen, die NSTimer.

EDIT:

In meiner Ausgabe, ich bekomme diese Fehlermeldung "beenden, genannt nach dem werfen einer Instanz von 'NSException'"

und dieser Fehler?

Countdown-timer mit NSTimer in

Hier ist mein code:

    #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

und meine .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
  • Was haben Sie erreicht noch und was nicht? Von dem, was ich hier zu sehen, sollte es update das label richtig. Tut es das? Oder ist das problem, das es sich nicht wiederholt?
Schreibe einen Kommentar