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];
}
Haben Sie bestätigt, dass hungerBar.progress über IB korrekt initialisiert/angeschlossen wurde (wenn Sie IB verwendet haben)? – Sam
Ja, ich habe hungerBar oben in - (void) loadView {} initialisiert. Entschuldigung sollte das erwähnt haben. :-) – Baza207
Einstellung von hungerBar.progress über eine beliebige literale Aktualisierung der Bar, e.x. hungerBar.progress = 0,50f; – Sam