2015-02-02 3 views
0

У меня есть пользовательская ячейка в UITableView с использованием xib-файла. Я программно создал UILabel с высотой 200 и шириной 50. Когда я делаю NSLog в ширину и высоту метки, это дает мне w: 50 и h: 200. Но когда я делаю NSLog в mainViewController.m он дает мне 0 для высоты и ширины.Вызов awakeFromNib из файла xib в главном ViewController

Не знаете, почему это так. Мне нужно, чтобы получить реальную высоту этикетки в mainViewController.m

Вот мой код:

- (void)awakeFromNib 
{ 
    self.label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 200)]; 
    [self.label setText:@"This is a label"]; 
    [self.myView addSubview:self.label]; 

    NSLog(@"%f", self.label.frame.size.height); // Results: 200.0000 
} 

mainViewController.m

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view. 

    customCell *cellVC = [[cutsomCell alloc] init]; 

    NSLog(@"%f, %f", cellVC.label.frame.size.height); // Results: 0.0000 
} 

Не awakeFromNib должен получить называется mainViewController.m на viewDidLoad если я использую файл xib? Если нет, как я могу его назвать в viewDidLoad?

ответ

0

awakeFromNib является инициализатор вызывается при загрузке из nib..ie добавить вид и изменить свой класс пользовательского класса в раскадровке/перо, и это будет вызывать porcess awakeFromNib method..not программно

Когда сделано программно использовать метод инициализации для этой цели или пользовательского инициализатора

-(id)init 
{ 
    //class super init calls 

    //then method calls 
    self.label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 200)]; 
    [self.label setText:@"This is a label"]; 
    [self.myView addSubview:self.label]; 

    //return self 
} 

Пример

- (id) init { 
    // Call superclass's initializer 
    self = [super init]; 
    if(self) { 
     self.label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 50, 200)]; 
     [self.label setText:@"This is a label"]; 
     [self.myView addSubview:self.label]; 
    } 
    return self; 
} 
+0

Не совсем уверен, что это значит ... Я новичок. Что мне делать, чтобы исправить это? –

+0

Это решило проблему моего вопроса, но теперь я не вижу ярлыка –