objective-c - IBOutlet 在自定义 UIView 中为 nil(使用 STORYBOARD)

标签 objective-c uiview storyboard iboutlet

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

#import <UIKit/UIKit.h>

@interface SettingItem : UIView{

}

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

@end

现在我正在使用 Storyboard。有一个 View Controller 。我将 UIView 拖到 viewcontroller。我拖了一个 UIImageView 作为上面 UIView 的 subview 。我将 Storyboard中的“SettingItem”类设置为 UIView。我通过从实用程序窗口中 SettingItem 的 socket 正常拖动将 socket 连接到 myImage。


SettingItem 实现

#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 中的 View 并检查了它的 socket 引用及其对 myImage 的指向。我错过了一些东西。我用谷歌搜索了帮助,但找不到任何解决方案。

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

最佳答案

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

关于objective-c - IBOutlet 在自定义 UIView 中为 nil(使用 STORYBOARD),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14089410/

相关文章:

objective-c - 获取正在执行的 .app 文件的当前路径

ios - 使用 UITableView 将 NSDictionary 传递给另一个 Controller

ios - 使用 UIView 作为按钮

ios - 检测 CAShapeLayer 列表中的长按

ios - 如何随着滚动改变 alpha 值

ios - NSJSONSerialization将\n添加到JSON字符串的开头和结尾

ios - 编写在特定时间为 View 设置动画的 UIView 动画函数

ios - 使用其他三个 View Controller 设置 UITabBarController

iphone - 如何将 TableView Controller 的类型更改为常规 View Controller ?

swift - 为什么 Xcode 无法识别 Main.storyboard?