我已在UIImageView
方法中以编程方式制作了此ImageView(viewDidLoad
)。
UIImageView *imageview = [[UIImageView alloc]initWithFrame:CGRectMake(110, 200, 100, 100)];
imageview.image = [UIImage imageNamed:@"imageviewImage.png"];
[self.view addSubview:imageview];
但是当我在viewDidLoad
方法中创建这样的按钮时,我无法在同一个类的其他方法中引用它。假设我想在同一个类的IBAction
方法中将ImageView alpha更改为0.0f。我可以像这样引用imageview:
-(IBAction) button {
imageview.alpha = 0.0f;
}
如果我想用另一种方法引用ImageView,最简单的做法是什么?
PS:必须以编程方式制作ImageView。
答案 0 :(得分:3)
因为你在本地声明它。把它变成你班级的实例变量。
@interface MyClass: NSObject {
UIImageView *imageView;
}
- (void)foo
{
imageView = [[UIImageView alloc] init];
}
- (void)bar
{
imageView.image = [UIImage imageNamed:@"baz"];
}
答案 1 :(得分:2)
问题在于范围。您在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];