我只想在viewcontoller的xib或stroy board上加载自定义视图(使用xib)。执行相同操作的最佳做法是什么。
我在下面使用了awakeAfterUsingCoder功能代码。
(id) awakeAfterUsingCoder:(NSCoder*)aDecoder
{
BOOL theThingThatGotLoadedWasJustAPlaceholder = ([[self subviews] count] == 0);
if (theThingThatGotLoadedWasJustAPlaceholder)
{
CustomView* theRealThing = (id) [CustomView view];
theRealThing.frame = self.frame;
theRealThing.autoresizingMask = self.autoresizingMask;
return theRealThing;
}
return self;
}
但使用此功能后,我的awakeFromNib开始多次调用。
请sugegst。
答案 0 :(得分:0)
正如您所发现的那样,目前正确的答案是过于复杂和错误。有一个更标准和更好的方法来做到这一点:
实例化XIB并检索您的CustomView实例,如下所示:
CustomView * view = [[UINib nibWithNibName:@“CustomView”bundle:nil] instantiateWithOwner:self options:nil] [0];
在视图控制器的viewDidLoad方法中将其添加到视图层次结构中:
[self.view addSubview:view];
如果需要进行任何自定义初始化,请务必覆盖CustomView子类中的-initWithCoder:
。我知道这很多,所以如果这些步骤让您感到困惑或者您遇到困难,请告诉我。