Iphone 在其他方法中引用以编程方式创建的对象

Iphone 在其他方法中引用以编程方式创建的对象,iphone,ios,objective-c,cocoa-touch,object,Iphone,Ios,Objective C,Cocoa Touch,Object,我已经在viewDidLoad方法中以编程方式创建了这个ImageView(UIImageView) UIImageView *imageview = [[UIImageView alloc]initWithFrame:CGRectMake(110, 200, 100, 100)]; imageview.image = [UIImage imageNamed:@"imageviewImage.png"]; [self.view addSubview:imageview]; 但是当我

我已经在
viewDidLoad
方法中以编程方式创建了这个ImageView(
UIImageView

  UIImageView *imageview = [[UIImageView alloc]initWithFrame:CGRectMake(110, 200, 100, 100)];
  imageview.image = [UIImage imageNamed:@"imageviewImage.png"];
  [self.view addSubview:imageview];
但是当我在
viewdiload
方法中创建这样的按钮时,我不能在同一类的其他方法中引用它。假设我想在同一类中的
iAction
方法中将ImageView alpha更改为0.0f。我不能像这样引用imageview:

  -(IBAction) button {
  imageview.alpha = 0.0f;
  }
如果我想用另一种方法引用ImageView,那么使用ImageView最简单的方法是什么


PS:ImageView必须以编程方式创建。

因为您在本地声明它。改为将其作为类的实例变量

@interface MyClass: NSObject {
    UIImageView *imageView;
}

- (void)foo
{
    imageView = [[UIImageView alloc] init];
}

- (void)bar
{
    imageView.image = [UIImage imageNamed:@"baz"];
}

问题是范围。在viewDidLoad中创建的imageView指针只能在此处访问。创建属性或使用标记

1) 创建属性:

// top of the .m file
@interface MyClass () /* replace MyClass with your class name */
@property(strong, nonatomic) UIImageView *imageView;
@end

// in viewDidLoad, don't declare UIImageView *imageView, just replace
// all mentions of it with self.imageView;
2) 或使用标签:

// top of the .m file
#define kIMAGE_VIEW_TAG   128

// in viewDidLoad
UIImageView *imageview = [[UIImageView alloc]initWithFrame:CGRectMake(110, 200, 100, 100)];
imageview.image = [UIImage imageNamed:@"imageviewImage.png"];
imageView.tag = kIMAGE_VIEW_TAG;
[self.view addSubview:imageview];

// elsewhere in the code, when you want the image view
UIImageView *imageView = (UIImageView *)[self.view viewWithTag:kIMAGE_VIEW_TAG];