从IBAction方法获取变量或对象

时间:2012-11-18 22:13:00

标签: iphone ios xcode ipad ios6

我一直在阅读,谷歌搜索和观看Lynda视频,以便在过去几天找到答案。我还没有找到一个好的答案。

这看起来应该很简单。使用常规方法,我可以传递变量。但是由于IBAction是(无效),我无法弄清楚如何将变量转换为另一种方法。

以下是我想要做的一些简单示例:

- (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);
}

任何引导我走向正确方向的建议都会很棒。我已经阅读并观看了关于可变范围,实例可变等的视频。只是不了解我需要在这里做什么

1 个答案:

答案 0 :(得分: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);
}