Как я могу получить высоту объектов из awakeFromNib в мой mainViewController.m?

Я программно создал UILable в файле xib - класс awakeFromNibи я пытаюсь получить высоту надписей в mainViewController.m, Я пытался с помощью NSBundle загрузить файл XIB, но это не сработало. Есть ли другой способ загрузить его? Мне нужно позвонить awakFromNib в viewDidLoad,

Вот мой код:

- (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.

    [[[NSBundle mainBundle] loadNibNamed:@"customCell" owner:self options:nil]objectAtIndex:0];
    customCell *cellVC = [[cutsomCell alloc] init];

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

мне нужно NSLog для отображения 200не 0,

1 ответ

Решение

У меня была самая большая неудача при загрузке перьев и проблем в поисках простого способа сделать это. Это то, что работало для меня в прошлом.

Добавьте это к customCell.m

- (id)initWithNib
{
    // where MyCustomView is the name of your nib
    UINib *nib = [UINib nibWithNibName:@"customCell" bundle:[NSBundle mainBundle]];
    self = [[nib instantiateWithOwner:self options:nil] objectAtIndex:0];
    return self;
}

Добавьте это к customCell.h

- (id)initWithNib;

Теперь, по вашему мнению, контроллер делает это

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

Я нашел хорошую ссылку здесь, которая использует этот пример здесь

Другие вопросы по тегам