如果以编程方式创build,则无法访问UIImageView

如果我通过Storyboard创build一个UIImageView并将其作为@property添加到ViewController.h ,则可以通过[self UIImageView]self.UIImageViewViewController.m任何位置访问该UIImageView

但是,如果我从viewDidLoad以编程方式创buildUIImageView ,如下所示,我似乎失去了从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; } 

所以后来如果我想修改在我从viewDidLoad创build的任何一个UIImageView显示的图像,我似乎无法访问它。 有谁知道我在做什么错?

您需要在头文件中创buildUIImageView,然后在整个视图中都可以使用。 不过你需要把它添加到viewDidLoad中的视图中。

  Header UIImageView *image; Main // ViewDidLoad image = [UIImageView alloc] ..... [self.view addSubView image]; Main Function ..... [image setImage .... 

答案AgnosticDev试图说这里是添加一个ivar到你的视图控制器的.h文件…例如:

 @implementation YHLViewController : ViewController { UIImageView * currImageView; } 

然后在你的“ viewDidLoad ”方法中,你可以通过以下方式分配和初始化它:

 currImageView = [[UIImageView alloc] init]; 

并可以从视图控制器的其他任何地方访问它。