iOS -custom xib文件未显示为UITextField

时间:2015-05-08 01:47:17

标签: ios iphone xcode uiview interface-builder

我正在关注此video(除非我在代码中链接自定义视图而不是IB),但我会解释发生了什么。我创建了一个自定义视图,扩展了UiView。它是从xib文件创建的。这是interfacebuilder中xib文件的照片:

enter image description here

请注意,文件所有者已链接到我的自定义类。

现在我将向您展示我的自定义课程:

#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

为什么这不起作用?什么也没出现。是因为我正在初始化自定义视图吗?当我在模拟器中检查时没有出现任何内容。我试过切换键盘但没有出现。应用程序的其余部分工作正常,但我的自定义视图不会出现。

1 个答案:

答案 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