0

如果我创建一个UIImageViewvia Storyboard 并将其作为 a 添加@property到 aViewController.h中,我可以UIImageViewViewController.mvia[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,我似乎无法访问它。有谁知道我做错了什么?

4

2 回答 2

1

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

         Header
         UIImageView *image;

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


         Main Function .....
         [image setImage ....
于 2013-01-27T06:07:33.400 回答
1

AgnosticDev 在这里试图说的答案是将 ivar 添加到视图控制器的 .h 文件中......例如:

@implementation YHLViewController : ViewController
{
    UIImageView * currImageView;
}

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

currImageView = [[UIImageView alloc] init];

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

于 2013-01-27T06:18:40.467 回答