【问题标题】:Can't access UIImageView if created programmatically如果以编程方式创建,则无法访问 UIImageView
【发布时间】:2013-01-27 06:05:19
【问题描述】:

如果我通过 Storyboard 创建 UIImageView 并将其作为 @property 添加到 ViewController.h 中,我可以从 ViewController.m 中的任何位置通过 [self UIImageView]self.UIImageView 访问该 UIImageView

但是如果我从viewDidLoad 以编程方式创建UIImageView,如下所示,我似乎无法从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 创建的任何UIImageView 中显示的图像,我似乎无法访问它。有谁知道我做错了什么?

【问题讨论】:

    标签: ios uiview uiscrollview uiimageview


    【解决方案1】:

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

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

    【讨论】:

    • 不,一点也不,如果您在头文件中以编程方式创建它,在 viewDidLoad 中对其进行初始化并将其添加到视图中,您将能够在视图中的任何位置访问它,但您需要将其添加到视图中
    【解决方案2】:

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

    @implementation YHLViewController : ViewController
    {
        UIImageView * currImageView;
    }
    

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

    currImageView = [[UIImageView alloc] init];
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-24
      • 2012-07-17
      • 1970-01-01
      • 2020-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多