【问题标题】:Calling awakeFromNib from xib file in the main ViewController从主 ViewController 中的 xib 文件调用 awakeFromNib
【发布时间】:2015-02-02 20:35:30
【问题描述】:

我在 UITableView 中有一个使用 xib 文件的自定义单元格。我以编程方式创建了一个高度为 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 中调用它?

【问题讨论】:

    标签: objective-c uitableview xib custom-cell awakefromnib


    【解决方案1】:

    awakeFromNib 是从 nib 加载时调用的初始化程序。即,您添加一个视图并将其类更改为 storyboard/nib 中的自定义类,此过程将调用 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;
    }
    

    【讨论】:

    • 不完全确定这意味着什么...我是初学者。我应该怎么做才能解决它?
    • 这解决了我的问题,但现在,我没有看到标签
    猜你喜欢
    • 1970-01-01
    • 2013-11-04
    • 2016-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-18
    • 2015-05-28
    • 2014-07-22
    相关资源
    最近更新 更多