自定义uiview中控件的初始化

Dmi*_*hik 1 iphone objective-c interface-builder

我在IB中创建了一个自定义uiview并为它设置了类.

#import <UIKit/UIKit.h>
#import <Foundation/Foundation.h>

@interface myView : UIControl {
    IBOutlet UITextView *textView;
}
@end

#import "myView.h"

@implementation myView

- (void)commonInit
{
    [textView setText:@"lajsdfklasdfjl"];
}

- (id)initWithCoder:(NSCoder *)aDecoder
{
    if (self = [super initWithCoder:aDecoder])
    {
        [self commonInit];
    }
    return self;
}

-(id)initWithFrame:(CGRect)frame
{
    if (self = [super initWithFrame:frame])
    {
        [self commonInit];
    }
    return self;
}

@end
Run Code Online (Sandbox Code Playgroud)

我在IB中将此视图上的textview文本视图与IBOutlet IUTextView*textView相关联.当我在我的UIViewController上拖动此自定义视图时(从IB的库中的类选项卡),视图为空. - (id)initWithCoder:(NSCoder*)aDecoder正在调用但textView为null.怎么了?谢谢

Eik*_*iko 8

据我记忆,在init中没有正确设置层次结构,因为只能在init完成后设置属性.

你想用

-(void)awakeFromNib
{
    [super awakeFromNib];
    [self commonInit];
}
Run Code Online (Sandbox Code Playgroud)

相反,initWithCoder:完全删除的东西.

作为旁注,您应该让您的班级名称以大写字母开头.