我正在尝试创建自定义UIView并将其加载到xib文件中。自定义UIView称为JtView,代码如下:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
NSLog(@"initWithFrame was called"); // this was called
if (self) {
// Initialization code
[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:NULL];
[self addSubview:self.view];
}
return self;
}
-(void)awakeFromNib
{
[super awakeFromNib];
[self addSubview:self.view];
}
在创建xib文件(文件 - >新建 - >文件 - >用户界面 - >视图)时,我删除了主窗口并从Xcode的对象调色板拖动了一个视图。我尝试使用alt拖动到JtView的标题,但这不起作用。我是否需要在此处创建关联,还是应该保留XCode创建的位置? (编辑 - 请参阅下面的评论以获得进一步说明)
我还在xib中添加了一个UILabel。
但是,当我在模拟器中运行并将背景颜色设置为红色时,标签不会显示。我是否需要在自定义UIView中创建UILabel作为参考?我应该删除它还是将其保留到位?
THX
编辑1 这是连接和头文件的屏幕截图:
答案 0 :(得分:1)
我解决了在UIView中添加一个类方法:
+ (id)customView;
+ (id)customView
{
CustomView *customView = [[[NSBundle mainBundle] loadNibNamed:@"CustomView" owner:nil options:nil] lastObject];
// make sure customView is not nil or the wrong class!
if ([customView isKindOfClass:[CustomView class]])
return customView;
else
return nil;
}
- (void)viewDidLoad
{
[super viewDidLoad];
CustomView *customView = [CustomView customView];
//And where you gonna use it add this line:
//this self.view refers to any view (scrollView, cellView...)
[self.view addSubview:customView];
}
我希望它会有所帮助
答案 1 :(得分:-1)
试试这个:
-(void)awakeFromNib {
NSArray *obj = [[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
[self addSubview:obj[0]];
}
或者如果您有一个名为" nibview"的@property IBOutlet你可以这样做:
-(void)awakeFromNib {
[[NSBundle mainBundle] loadNibNamed:@"MyView" owner:self options:nil];
[self addSubview:self.nibview];
}