如果我通过故事板创建UIImageView
并将其作为@property
添加到ViewController.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
中的任何一个中显示的图像,我似乎无法访问它。有谁知道我做错了什么?
答案 0 :(得分:1)
您需要在头文件中创建UIImageView,然后在整个视图的其余部分都可以使用它。您需要将它添加到viewDidLoad中的视图中。
Header
UIImageView *image;
Main // ViewDidLoad
image = [UIImageView alloc] .....
[self.view addSubView image];
Main Function .....
[image setImage ....
答案 1 :(得分:1)
AgnosticDev在这里试图说的答案是在视图控制器的.h文件中添加一个ivar ......例如:
@implementation YHLViewController : ViewController
{
UIImageView * currImageView;
}
然后在您的“viewDidLoad
”方法中,您可以通过以下方式分配和初始化它:
currImageView = [[UIImageView alloc] init];
并可以从视图控制器中的任何其他位置访问它。