2012-04-28 2 views
1

У меня есть подкласс UITextField и вы хотите добавить его в представление в IB. То, что я сделал, добавлено UITextField и изменило его класс на мой подкласс на вкладке «Идентификация» Inspector. Но я вижу только UITextField в представлении.Подкласс UIView. Как добавить через Interface Builder?

Код:

@interface ExtendedTextField : UITextField { 
} 

//implementation 


@implementation ExtendedTextField 

- (void)baseInit 
{ 
    UIImage * curImage = [UIImage imageNamed:@"tfbg.png"]; 
    [self baseInitWithImage : curImage]; 
} 

- (void)baseInitWithImage : (UIImage *) aImage 
{ 
    aImage = [aImage stretchableImageWithLeftCapWidth:29 topCapHeight:29]; 
    self.background = aImage; 
    self.contentVerticalAlignment = UIControlContentVerticalAlignmentCenter; 

    UIView * curLeftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 10, self.frame.size.height)]; 

    self.leftView = curLeftView; 
    self.rightView = curLeftView; 
    [curLeftView release]; 
    self.leftViewMode = UITextFieldViewModeAlways; 
    self.rightViewMode = UITextFieldViewModeAlways; 
    [self setTextColor:[UIColor greenColor]]; 
} 

- (void)awakeFromNib 
{ 
    [super awakeFromNib]; 
    [self baseInit]; 
} 

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

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

- (id)initWithFrame:(CGRect)frame withImage:(UIImage*)aImage 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     [self baseInitWithImage : aImage]; 
    } 
    return self; 
} 

- (void)dealloc { 
    [super dealloc]; 
} 


@end 

EDIT: Я заметил несколько вещей:

- если я поставлю [супер initWithFrame: ...] вместо [супер initWithCoder: ...] внутри

(идентификатор) initWithCoder: (NSCoder *) aDecoder

он работает хорошо.

- Теперь я использую awakefromnib вместо initwithcoder, и единственное, что изменилось в текстовом поле, - textColor. Может кто-нибудь объяснить, почему так?

Решение Мне нужно было установить граничный стиль никому. BS наложенное изображение bg.

ответ

1

Показывая свой .xib в Xcode, откройте правую панель, выберите свой вид и на третьей вкладке, измените Class на то, что вы хотите.

+0

Как я уже сказал, я задал класс для того, что я хотел на вкладке «Просмотр удостоверения». Это не помогло - initWithCoder не вызван. – Sergey

+0

Можете ли вы разместить образец проекта? –

Смежные вопросы