如果以编程方式创build,则无法访问UIImageView
如果我通过Storyboard创build一个UIImageView
并将其作为@property
添加到ViewController.h
,则可以通过[self UIImageView]
或self.UIImageView
从ViewController.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];
并可以从视图控制器的其他任何地方访问它。