web-dev-qa-db-ja.com

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

}
...

何かアイデア、または助け?

(これはすべて手で詰まっていたので、ちょっとガクガクしているように見える場合はご容赦ください)必要に応じて詳細情報を提供できます。

9
dcrawkstar

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

 }
16
GorillaPatch

.mファイルでtheLabelを合成していますか...?そうでなければ、あなたはそうする必要があると私は信じています。

0