2010-12-14 1 views
1

Ich verwende einen NSTimer in einer NSObject-Klasse (Timer), der eine Methode auslöst, die eine Variable erhöht und eine Methode in einem View-Controller (InfoViewController) auslöst. (Confused ;-D)NSTimer Auslösender UIProgressView-Fehler

Alles erscheint auf dem Bildschirm und der Timer wird korrekt gestartet. Die Variable f.hunger wird aktualisiert und zeigt den korrekten Wert an (bei Verwendung von printf ("% f", f.hunger)), aber die UIProgress-Leiste aktualisiert sich nicht. Der Startwert von f.hunger ist 1.

Wenn mir jemand helfen kann, zeigen Sie mir, wo ich einen offensichtlichen Fehler gemacht habe oder einen Vorschlag bekommen habe, der am meisten geschätzt wird, da er jetzt seit ein paar Stunden den Kopf einnimmt . Ich habe unten einen Beispielcode hinzugefügt, um zu zeigen, was ich ein bisschen deutlicher mache.

Prost an alle. :-D

Timer Klasse

- (void)startHungerTimer 
{ 
if(hungerTimer.isValid == NO) 
{ 
    infoVC = [[InfoViewController alloc] init]; 
    self.hungerTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self  selector:@selector(incrementHungerTimer:) userInfo:nil repeats:YES]; 
} 
} 

- (void)incrementHungerTimer:(NSTimer *)aTimer 
{ 
    f.hunger -= 0.01; 
    [infoVC updateHungerProgress]; 
} 

Info-View-Controller

- (void)updateHungerProgress 
{ 
Functions *f = [Functions sharedFunctions]; 
hungerBar.progress = f.hunger;   
} 

- (void)loadView 
{ 
    hungerBar = [[UIProgressView alloc] initWithProgressViewStyle:UIProgressViewStyleDefault]; 
    [hungerBar setFrame:CGRectMake(17.0, 30.0, 160.0, 10.0)]; 
    hungerBar.progress = f.hunger; 
    [bView addSubview:hungerBar]; 
    [hungerBar release]; 
} 
+2

Haben Sie bestätigt, dass hungerBar.progress über IB korrekt initialisiert/angeschlossen wurde (wenn Sie IB verwendet haben)? – Sam

+0

Ja, ich habe hungerBar oben in - (void) loadView {} initialisiert. Entschuldigung sollte das erwähnt haben. :-) – Baza207

+0

Einstellung von hungerBar.progress über eine beliebige literale Aktualisierung der Bar, e.x. hungerBar.progress = 0,50f; – Sam

Antwort

0

Meine Vermutung, da Ihre Frage und Kommentare, ist, dass Ihre "hungerBar" Steckdose nicht mit dem Fortschrittsbalken verbunden ist, im Interface Builder.

+0

Prost für den Vorschlag, aber ich benutze nicht Interface Builder. Ich mache alles im Code. :-) – Baza207

+0

Dann würde ich vorschlagen, den Code, den Sie verwendet, um den Fortschrittsbalken zu erstellen. –

+0

Ich habe den obigen Beitrag bearbeitet, um in die - (void) loadView einzufügen, die den Teil des Codes zeigt, wo ich das UIProgressView erstelle. Hoffe, dass dies mehr Licht ins Dunkel brachte. :-) – Baza207