我正在关注此video(除非我在代码中链接自定义视图而不是IB),但我会解释发生了什么。我创建了一个自定义视图,扩展了UiView。它是从xib
文件创建的。这是interfacebuilder中xib
文件的照片:
请注意,文件所有者已链接到我的自定义类。
现在我将向您展示我的自定义课程:
#import "CostcoLoginView.h"
@implementation CostcoLoginView
-(id)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if(self){
}
return self;
}
-(id)initWithCoder:(NSCoder *)aDecoder{
self=[super initWithCoder:aDecoder];
if(self){
[[NSBundle mainBundle] loadNibNamed:@"CostcoLoginView" owner:self options:nil];
[self addSubview:self.view];
}
return self;
}
@end
这是我的自定义视图的头文件:
#import <UIKit/UIKit.h>
@interface CostcoLoginView : UIView
@property (strong, nonatomic) IBOutlet UIView *view;
@end
注意我拥有的一个属性:它是一个链接到上面照片中显示的interfacebuilder xib
文件的视图。
到目前为止,一切看起来都很好。我现在的目标是将此自定义UIView用作我inputAccessoryView
的{{1}}。这是部分代码:
UITextField
为什么这不起作用?什么也没出现。是因为我正在初始化自定义视图吗?当我在模拟器中检查时没有出现任何内容。我试过切换键盘但没有出现。应用程序的其余部分工作正常,但我的自定义视图不会出现。
答案 0 :(得分:0)
调用init时没有添加子视图,而忘记在xib中设置视图的框架。 所以您可以将代码更改为此并尝试。
#import "CostcoLoginView.h"
@implementation CostcoLoginView
-(id)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if(self){
[self setup];
}
return self;
}
-(id)initWithCoder:(NSCoder *)aDecoder{
self=[super initWithCoder:aDecoder];
if(self){
[self setup];
}
return self;
}
-(id)init{
self = [super init];
if (self) {
[self setup];
}
return self;
}
-(void)setup{
[[NSBundle mainBundle] loadNibNamed:@"CostcoLoginView" owner:self options:nil];
self.view.frame = self.bounds;
[self addSubview:self.view];
}
@end