我有一个从 xib 文件加载的自定义 UIView (MyView) 对象。在 MyView.m 中,我有一个在 initWithCoder 中调用的方法,它会进行一些初始化。这在大多数情况下都有效,但我试图在此处设置一些 IBOutlet 标签属性中的文本,但它不起作用,我意识到因为此时属性尚未初始化。
我尝试在 drawRect 方法中设置网点的文本,它确实有效。但我想我读到如果你不需要实现 drawRect 会导致一些性能下降。我的问题是,在哪里设置 IBOutlet 标签属性的文本的最佳位置?(我实际上正在做的是将其设置为 xib 中的本地化版本。我知道本地化的 xib 文件,但我想在代码中设置文本。)
这是一些代码。这是我在视图控制器中初始化视图的方式:
NSArray *nibContents = [[NSBundle mainBundle] loadNibNamed:@"MyView"
owner:self
options:nil];
_myView = [nibContents objectAtIndex:0];
这是 MyView.m 中的 initWithCoder 方法
- (id)initWithCoder:(NSCoder *)coder
{
self = [super initWithCoder:coder];
if (self) {
[self localizeLabels];
}
return self;
}
这是 localizeLabels 方法:
- (void)localizeLabels
{
self.powerPlant.text = NSLocalizedString(@"POWERPLANTBREAKDOWN_HEADERCOLUMN1", nil);
self.output.text = NSLocalizedString(@"POWERPLANTBREAKDOWN_HEADERCOLUMN2", nil);
self.capacity.text = NSLocalizedString(@"POWERPLANTBREAKDOWN_HEADERCOLUMN3", nil);
}
我检查了这些方法确实是使用断点调用的,并且 localizeLabels 方法中的属性为零。