从主 ViewController 中的 xib 文件调用 awakeFromNib



我在使用 xib 文件的UITableView中有一个自定义单元格。我以编程方式创建了一个高度为 200、宽度为 50 的UILabel。当我customCell.m标签的宽度和高度进行NSLog时,它会给我 w:50 和 h:200。但是当我在mainViewController.m中做一个NSLog时,它给我的高度和宽度为 0。

不知道为什么会这样做。我需要在mainViewController.m中获取标签的实际高度

这是我的代码:

customCell.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
}

如果我使用 xib 文件,awakeFromNib不应该在viewDidLoad被称为mainViewController.m吗?如果没有,我该如何用viewDidLoad来称呼它?

awakeFromNib是从nib加载时调用的初始值设定项。即,您添加一个视图并将其类更改为情节提要/笔尖中的自定义类,此 porcess 将调用awakeFromNib方法。不是以编程方式

以编程方式完成时,使用 init 方法或自定义初始值设定项

-(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;
}

相关内容

  • 没有找到相关文章

最新更新