我有一个自定义的 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/