首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在自定义UIView中,IBOutlet为空(使用情节提要)

在自定义UIView中,IBOutlet为空(使用情节提要)
EN

Stack Overflow用户
提问于 2012-12-30 16:37:19
回答 7查看 19.8K关注 0票数 21

我有一个自定义的UIView类。在它内部,我为UIImageView声明了一个IBOutlet属性。

代码语言:javascript
复制
#import <UIKit/UIKit.h>

@interface SettingItem : UIView{

}

@property (strong, nonatomic) IBOutlet UIImageView *myImage;

@end

现在我使用的是故事板。这里有一个视图控制器。我把UIView拖到了viewcontroller。我拖动了一个UIImageView作为上面UIView的子视图。我从storyboard中将"SettingItem“类设置为UIView。我通过从公用程序窗口从SettingItem的插座中正常拖动,将插座连接到myImage。

SettingItem实现

代码语言:javascript
复制
#import "SettingItem.h"

@implementation SettingItem

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
        [self baseInit];
    }
    return self;
}

-(id) initWithCoder:(NSCoder *)aDecoder{
    self = [super initWithCoder:aDecoder];
    if (self) {
        // Initialization code
        [self baseInit];
    }
    return self;
}

- (void) baseInit{
    NSLog(@"myImage %@"self.myImage);
}

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    // Drawing code
}
*/

@end

现在我的问题是myImage总是nil,在NSLog上面只打印插座的(null)。我检查了storyboard中的视图,并检查了它的outlet引用和指向myImage。我遗漏了一些东西。我在谷歌上寻求帮助,但找不到任何解决方案。

你能指出我做错了什么吗?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2014-06-26 21:11:39

在您的视图中覆盖awakeFromNib -这是在分配IBOutlets之后调用的第一个生命周期方法,并且是您的代码的正确位置。

票数 77
EN

Stack Overflow用户

发布于 2016-04-16 13:52:04

在awakeFromNib中初始化它们:

代码语言:javascript
复制
- (void)awakeFromNib
{
    //init code
}
票数 4
EN

Stack Overflow用户

发布于 2013-01-14 02:26:15

我刚刚遇到了完全相同的问题,解决方案非常简单:

您正在访问myImage to soon -就是这样。

使用-(id) initWithCoder:(NSCoder *)aDecoder{- (id)initWithFrame:(CGRect)frame时,还没有绘制UIView。所以myImage还没有初始化。

如果您添加一个UIButton和一个IBAction并执行以下操作,则可以对其进行测试:

代码语言:javascript
复制
- (IBAction)buttonClicked:(id)sender {
    NSLog(@"%@",myImage);
}

您将看到myImage如何不再是nil

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14089410

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档