2

このImageView(UIImageView)をプログラムでviewDidLoadメソッドに作成しました。

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

しかし、このようなボタンをメソッドで作成するviewDidLoadと、同じクラスの他のメソッドでそれを参照することはできません。IBAction同じクラスのメソッドでImageViewalphaを0.0fに変更したいとします。私はこのようにimageviewを参照することができます:

  -(IBAction) button {
  imageview.alpha = 0.0f;
  }

別のメソッドでImageViewを参照する場合、ImageViewを使用する最も簡単な方法は何ですか?

PS:ImageViewはプログラムで作成する必要があります。

4

2 に答える 2

3

ローカルで宣言しているからです。代わりに、クラスのインスタンス変数にします。

@interface MyClass: NSObject {
    UIImageView *imageView;
}

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

- (void)bar
{
    imageView.image = [UIImage imageNamed:@"baz"];
}
于 2013-02-01T19:24:46.060 に答える
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];
于 2013-02-01T19:28:30.517 に答える