如果创建程序无法访问的UIImageView(Can't access UIImageVie

2019-08-08 09:48发布

如果我创建UIImageView通过故事板,并将其添加为@propertyViewController.h ,我可以访问UIImageView从任何地方ViewController.m通过[self UIImageView]self.UIImageView

但是,如果我创建了UIImageView自编程viewDidLoad ,你看到下面,我似乎失去从外部访问的能力viewDidLoad

UIImageView *prevImgView = [[UIImageView alloc] init];
UIImageView *currImgView = [[UIImageView alloc] init];
UIImageView *nextImgView = [[UIImageView alloc] init];

NSArray *imageViews = [NSArray arrayWithObjects:prevImgView, currImgView, nextImgView, nil];

UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:self.view.bounds];
[self.view addSubview: scrollView];

CGRect cRect = scrollView.bounds;
UIImageView *cView;

for (int i=0; i<imageViews.count; i++) {
    cView = [imageViews objectAtIndex:i];
    cView.frame = cRect;
    [scrollView addSubview:cView];
    cRect.origin.x += cRect.size.width;
}

所以后来如果我想修改正在显示在任意一个图像UIImageView我从创建viewDidLoad ,我似乎无法访问。 有谁知道我做错了吗?

Answer 1:

您需要在您的头文件来创建你的UIImageView,然后将整个视图的其余部分可用。 您需要将其添加到viewDidLoad中的视图,虽然。

         Header
         UIImageView *image;

         Main // ViewDidLoad
         image = [UIImageView alloc] .....
         [self.view addSubView image];


         Main Function .....
         [image setImage ....


Answer 2:

答案是AgnosticDev想在这里说的是对的伊娃添加到您的视图控制器的.h文件中...例如:

@implementation YHLViewController : ViewController
{
    UIImageView * currImageView;
}

然后在你的“ viewDidLoad ”的方法,你可以分配,并通过初始化:

currImageView = [[UIImageView alloc] init];

并在您的视图控制器从其他地方访问它。



文章来源: Can't access UIImageView if created programmatically