-1

私はここ数日、Lyndaのビデオを読んだり、グーグルしたり、見たりして、その答えを見つけてきました。私はまだ良い答えを見つけていません。

これはかなり単純なはずです。通常のメソッドでは、変数を渡すことができます。しかし、IBActionが(void)であるため、変数を別のメソッドに取得する方法がわかりません。

これが私がやりたいことのいくつかの簡単な例です:

- (IBAction)treeButton:(id)sender {
    int test = 10;
}


-(void)myMethod{
     NSLog(@"the value of test is %i",test);
}

これは私が本当に働きたいことです。保存して別の方法で使用する初期位置をボタンに設定させようとしています。

- (IBAction)locationButton:(id)sender {
    CLLocation *loc1 = [[CLLocation alloc]
       initWithLatitude:_locationManager.location.coordinate.latitude
       longitude:_locationManager.location.coordinate.longitude];
}


-(void)myMethod{
     NSLog(@"the value of test is %i",test);
     NSLog(@"location 1 is %@",loc1);
}

私を正しい方向に導くための提案は素晴らしいでしょう。可変スコープ、インスタンス変数などのビデオを読んだり見たりしました。ここで何をする必要があるのか​​理解できていません。

4

1 に答える 1

1

myMethod必要なパラメータを受け入れるように変更します。

- (void)myMethod:(CLLocation *)location {
    NSLog(@"location 1 is %@", location);
}

次のように呼び出します。

- (IBAction)locationButton:(id)sender {
    CLLocation *loc1 = [[CLLocation alloc]
       initWithLatitude:_locationManager.location.coordinate.latitude
       longitude:_locationManager.location.coordinate.longitude];
    [self myMethod:loc1];
}

複数のメソッドまたはコード内のさまざまなポイントからアクセスできるようにする必要がある場合は、宣言でインスタンス変数を作成することをお勧めloc1します@interface

@interface MyClass : NSObject {
    CLLocation *loc1;
}

メソッドでは、再宣言する代わりに、次のように設定します。

loc1 = [[CLLocation alloc]
       initWithLatitude:_locationManager.location.coordinate.latitude
       longitude:_locationManager.location.coordinate.longitude];

myMethod、アクセスするだけです。

- (void)myMethod{
    NSLog(@"location 1 is %@", loc1);
}
于 2012-11-18T22:15:19.747 に答える