私は立ち往生しています:(
私のアプリケーションでは、新しい位置への更新を取得するたびに、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]];
}
...
何かアイデア、または助け?
(これはすべて手で詰まっていたので、ちょっとガクガクしているように見える場合はご容赦ください)必要に応じて詳細情報を提供できます。
LoadViewメソッドが間違っています。インスタンス変数を適切に設定せず、代わりに新しいローカル変数を生成します。後でテキストを設定するためにラベルへの参照を保持したいので、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];
}
その後、次のように変数に直接アクセスします。
- (void)locationManager:(CLLocationManager *)manager
didUpdateToLocation:(CLLocation *)newLocation
fromLocation:(CLLocation *)oldLocation
{
NSLog(@"Location: %@", [newLocation description]);
theLabel.text = [NSString stringWithFormat: @"Your Location is: %@", [newLocation description]];
}
.mファイルでtheLabelを合成していますか...?そうでなければ、あなたはそうする必要があると私は信じています。