IBInspectable属性在initWithCoder中没有其值:初始值设定项

Whi*_*ind 5 xcode objective-c uikit ibdesignable ibinspectable

我在MyClass.h文件中有此文件:

#import <UIKit/UIKit.h>

IB_DESIGNABLE

@interface MyClass : UIView

@end
Run Code Online (Sandbox Code Playgroud)

这是.m文件中的代码:

-(void)awakeFromNib{
    [super awakeFromNib];

    NSLog(@"This works %lud",(unsigned long)self.max);
}

-(instancetype)initWithCoder:(NSCoder *)aDecoder{

    if ((self = [super initWithCoder:aDecoder])){

        NSLog(@"This doesn't work %lud",(unsigned long)self.max);
    }

    return self;
}
Run Code Online (Sandbox Code Playgroud)

在awakeFromNib方法中,我在IB中设置了正确的值。在initWithCoder中:此值等于零。

检查该属性中在IB中设置的值的合适时间是什么?

这就是我在.m文件中定义属性的方式:

@interface MyClass()

@property (nonatomic) IBInspectable NSUInteger max;

@end
Run Code Online (Sandbox Code Playgroud)

mat*_*att 7

您似乎已经回答了自己的问题:awakeFromNib而不是initWithCoder:awakeFromNib稍后,到那时,已经设置了运行时属性。

当然,在现实生活中,直到我们达到时,您可能才会在意此值viewDidLoad,这要比两者都晚得多