2010-08-25 22 views
2

Hey les gars, une autre question!Iphone XCode Mon compte à rebours n'anime plus

Encore une fois je voudrais dire que je suis nouveau à ce sujet et donc ma capacité à comprendre le langage Objective C et l'application Xcode est limitée! Donc, votre aide est vraiment appréciée!

J'ai créé une application de compte à rebours qui montre quand une station de radio va se mettre en marche, le compte à rebours fonctionne parfaitement et mis à jour en temps réel une seconde, puis je l'insère dans une "If-Statement" du lancement de la station arrive le compte à rebours disparaît, mais maintenant mon compte à rebours ne se met pas à jour en temps réel, il se trouve juste statique.

Voici mon code:

- (void)viewDidAppear:(BOOL)animated { 

     self.today = [NSDate date]; 
     NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init]; 
     [dateformatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"]; 

     NSString *launchDay = [[NSString alloc] initWithString:@"11/26/2010 11:59:59"]; 
     NSDate *currentDate = [dateformatter dateFromString:launchDay]; 

     NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
     int unitFlags = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 
     NSDateComponents *components = [gregorian components:unitFlags fromDate:today toDate:currentDate options:0]; 


     if ([today timeIntervalSinceDate:currentDate] <= 0){ 
        self.today = [NSDate date]; 
     NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init]; 
     [dateformatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"]; 
     countdownLabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d:%02d", components.day, components.hour, components.minute, components.second ]; 
      self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateLabel) userInfo:nil repeats:YES]; 
     [self updateLabel]; 
     days.text = @"Days"; 
     hours.text = @"Hours"; 
     mins.text = @"Mins"; 
     secs.text = @"Secs"; 
     until.text = @"Until XtremeFM Launch!"; 
    } 

    else { 
     countdownLabel.text [email protected]"XtremeFM is LIVE"; 

    } 
} 

Les gars toute aide est grandement appréciée et j'espère vraiment que quelqu'un là-bas peut me aider!

Merci les gars, Phil

ok est le code ici pour l'ensemble du fichier .M de l'écran d'accueil

#import "XtremeFMViewController.h" 

@implementation XtremeFMViewController 



/* 
// The designated initializer. Override to perform setup that is required before the view is loaded. 
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { 
    if ((self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil])) { 
     // Custom initialization 
    } 
    return self; 
} 
*/ 

/* 
// Implement loadView to create a view hierarchy programmatically, without using a nib. 
- (void)loadView { 
} 
*/ 



@synthesize countdownLabel, today, timer, todayDate, days, hours, mins, secs, until; 


-(void)updateLabel { 
    self.today = [NSDate date]; 
    NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init]; 
    [dateformatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"]; 

    //NSString *launchDay = [[NSString alloc] initWithString:@"11/26/2010 11:59:59"]; 
    //NSDate *currentDate = [dateformatter dateFromString:launchDay]; 

    //NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    //int unitFlags = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 
    //NSDateComponents *components = [gregorian components:unitFlags fromDate:today toDate:currentDate options:0]; 


} 

    - (void)viewDidAppear:(BOOL)animated { 

     self.today = [NSDate date]; 
     NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init]; 
     [dateformatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"]; 

     NSString *fathersDay = [[NSString alloc] initWithString:@"11/26/2010 11:59:59"]; 
     NSDate *currentDate = [dateformatter dateFromString:fathersDay]; 

     NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
     int unitFlags = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 
     NSDateComponents *components = [gregorian components:unitFlags fromDate:today toDate:currentDate options:0]; 


     if ([today timeIntervalSinceDate:currentDate] <= 0){ 
        self.today = [NSDate date]; 
     NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init]; 
     [dateformatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"]; 
     countdownLabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d:%02d", components.day, components.hour, components.minute, components.second ]; 
      self.timer = [NSTimer scheduledTimerWithTimeInterval:1.0 target:self selector:@selector(updateLabel) userInfo:nil repeats:YES]; 
     [self updateLabel]; 
     days.text = @"Days"; 
     hours.text = @"Hours"; 
     mins.text = @"Mins"; 
     secs.text = @"Secs"; 
     until.text = @"Until XtremeFM Launch!"; 
    } 

    else { 
     countdownLabel.text [email protected]"XtremeFM is LIVE"; 

    } 
} 


- (IBAction)watchLive { 

    self.today = [NSDate date]; 
    NSDateFormatter *dateformatter = [[NSDateFormatter alloc] init]; 
    [dateformatter setDateFormat:@"MM/dd/yyyy hh:mm:ss"]; 
    NSString *launchDay = [[NSString alloc] initWithString:@"11/26/2010 11:59:00"]; 
    NSDate *currentDate = [dateformatter dateFromString:launchDay]; 

    //NSCalendar *gregorian = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; 
    //int unitFlags = NSDayCalendarUnit | NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit; 
    //NSDateComponents *components = [gregorian components:unitFlags fromDate:today toDate:currentDate options:0]; 
    //countdownLabel.text = [NSString stringWithFormat:@"%02d:%02d:%02d:%02d", components.day, components.hour, components.minute, components.second ]; 



    if ([today timeIntervalSinceDate:currentDate] >= 0){ 

     NSString *webpage = @"http://xphiltestpagex.is.livestream-api.com/livestreamiphone/philtestpage/playlist.m3u8"; 
     NSURL *nswebpage = [NSURL URLWithString:webpage]; 
     NSURLRequest *nsurl = [NSURLRequest requestWithURL:nswebpage]; 
     [webView loadRequest:nsurl]; 

    } 
    else { 

     UIAlertView*alert = [[UIAlertView alloc] initWithTitle:@"Coming Soon" message:@"Feed goes live Friday 26th November 12:00pm" delegate:nil cancelButtonTitle:@"Dismiss" otherButtonTitles:nil]; 
     [alert show]; 
     [alert release]; 
    } 


} 

-(IBAction)requestsPage { 
    RequestsPageViewController *move = [[RequestsPageViewController alloc]initWithNibName:nil bundle:nil]; 
    move.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    [self presentModalViewController:move animated:YES]; 
    [move release]; 
} 

-(IBAction)twitterButton { 
    RequestsPageViewController *move = [[RequestsPageViewController alloc]initWithNibName:nil bundle:nil]; 
    move.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    [self presentModalViewController:move animated:YES]; 
    [move release]; 
} 


/* 
// Override to allow orientations other than the default portrait orientation. 
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { 
    // Return YES for supported orientations 
    return (interfaceOrientation == UIInterfaceOrientationPortrait); 
} 
*/ 

- (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)viewDidUnload { 
    // Release any retained subviews of the main view. 
    // e.g. self.myOutlet = nil; 
} 


- (void)dealloc { 
    [super dealloc]; 
} 

@end 

Voir j'avais un (BOOL) animée sur le ViewDidAppear mais je ne suis pas sûr comment ajouter cela dans l'instruction if (Noob)

+0

inclure votre code pour 'updateLabel'. Vous ne définissez le texte de l'étiquette qu'une seule fois où il semble que vous souhaitiez que l'étiquette soit mise à jour toutes les secondes. – falconcreek

+0

s'il vous plaît corriger le formatage. Il semble que vous ayez déplacé le code qui définit le texte de l'étiquette (qui est maintenant mis en commentaire) dans 'viewDidAppear' qui n'est appelé que lorsque la vue entière est affichée. Je pense que vous devez passer du temps à lire le suivant http://developer.apple.com/iphone/library/featuredarticles/ViewControllerPGforiPhoneOS/BasicViewControllers/BasicViewControllers.html#//apple_ref/doc/uid/TP40007457-CH101-SW19 – falconcreek

Répondre

0

Je trouve NSLog() inestimable pour traquer les choses qui ne déclenchent pas correctement les conditions.

Immédiatement avant votre if(), allez:

NSLog(@"%d", [today timeIntervalSinceDate:currentDate]); 

Et puis regardez et voyez ce que vous obtenez sur la console. Un point que j'ai foiré de ce genre de choses est de tester les valeurs dans le mauvais ordre, donc ce que je m'attends à être négatif est positif et vice versa.

De plus, vous perdez à peu près tout ce que vous allouez dans ce code. Revenez à travers et release tout ce que vous alloc s'il vous plaît!

+0

Ajouté ceci sur l'application et couru dans la console, mais rien n'a été ajouté à un journal de toute sorte, j'ai couru NSLogs avant donc je suis conscient de la façon dont ils devraient apparaître, mais cela ne montre rien –

+0

Vous savez quoi, je l'ai dit pour utiliser% d, il devrait être% f, car NSTimeInterval est un double. Je suis surpris que vous n'ayez pas obtenu un BAD_EXEC là-bas ... Essayez-le avec un% f et voyez s'il indique quelque chose de sensé. –