So aktualisieren Sie ein UILabel in Xcode programmatisch ohne XIB-Dateien?
Bin ich hängen geblieben 🙁
In meiner Anwendung habe ich ein update benötigen vom CLLocationManager jedes mal wird es ein update auf eine neue position. Ich bin nicht mit XIB/NIB Dateien, alles, was ich codiert habe ich getan programmgesteuert. Der code:
die .h
@interface TestViewController : UIViewController
UILabel* theLabel;
@property (nonatomic, copy) UILabel* theLabel;
@end
den .m
...
-(void)loadView{
....
UILabel* theLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0,0.0,320.0,20.0)];
theLabel.text = @"this is some text";
[self.view addSubView:theLabel];
[theLabel release]; //even if this gets moved to the dealloc method, it changes nothing...
}
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
NSLog(@"Location: %@", [newLocation description]);
//THIS DOES NOTHING TO CHANGE TEXT FOR ME... HELP??
[self.view.theLabel setText:[NSString stringWithFormat: @"Your Location is: %@", [newLocation description]]];
//THIS DOES NOTHING EITHER ?!?!?!?
self.view.theLabel.text = [NSString stringWithFormat: @"Your Location is: %@", [newLocation description]];
}
...
Irgendwelche Ideen oder Hilfe?
(dies wurde allen hand eingeklemmt, so bitte verzeihen Sie mir, wenn es sieht ein bisschen gacked) ich kann mehr Infos, wenn nötig.
- Hat die NSLog zeigen die richtige Lage?
- Hast du nicht meine viewDidLoad?
- Ich habe es in der loadView, sollte das UILabel in viewDidLoad? Ist, dass der override-Punkt? Und warum würde das für das UILabel veränderlich
- Mit loadView in einem UIViewController, um programmgesteuert erstellen Sie eine Benutzer-Schnittstelle ist OK. Aber Sie haben Recht, wenn Sie verweisen möchten IBOutlets verwenden Sie die Kommentarzeichen vor der viewDidLoad-Methode, um sicherzustellen, die XIB geladen wurde und alle Anschlüsse sind bereits vorhanden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ihre loadView-Methode falsch ist. Sie nicht die Instanz-variable richtig, aber Sie stattdessen erzeugen Sie eine neue lokale variable. Ändern Sie die folgenden durch das weglassen der
UILabel *
und nicht loslassen, es, weil Sie wollen, halten eine Referenz rund um das label, um den text später.Dann später direkt Zugriff auf die variable wie diese:
Sind Sie die Synthese theLabel in Ihr .m-Datei...? Wenn nicht, musst du, glaube ich.