如何在没有XIB文件的情况下以编程方式更新Xcode中的UILabel?

我卡住:(
在我的应用程序中,我需要每次从CLLocationManager更新到新位置时进行更新。 我没有使用XIB / NIB文件,我编写的所有代码都是以编程方式完成的。 代码:
.h

@interface TestViewController : UIViewController UILabel* theLabel; @property (nonatomic, copy) UILabel* theLabel; @end 

.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]]; } ... 

任何想法,或帮助?

(这是所有手卡住,所以请原谅我,如果它看起来有点gacked),我可以提供更多的信息,如果需要的话。

你的loadView方法是错误的。 您不要正确设置实例variables,而是生成一个新的局部variables。 通过省略UILabel *将其更改为以下内容,并且不要释放它,因为您希望保留标签的引用以便稍后设置文本。

 -(void)loadView{ .... theLabel = [[UILabel alloc] initWithFrame:CGRectMake(0.0,0.0,320.0,20.0)]; theLabel.text = @"this is some text"; [self.view addSubView:theLabel]; } - (void) dealloc { [theLabel release]; [super dealloc]; } 

然后稍后直接访问这个variables:

  - (void)locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation { NSLog(@"Location: %@", [newLocation description]); theLabel.text = [NSString stringWithFormat: @"Your Location is: %@", [newLocation description]]; } 

你在.m文件中合成标签吗? 如果没有,我相信你需要。