2013-08-03 131 views
0

我只想在viewcontoller的xib或stroy board上加载自定义视图(使用xib)。最佳做法也是这样做。如何使用xib或故事板上的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开始多次调用。

请注意。

回答

0

正如您发现的那样,当前链接的正确答案过于复杂和错误。还有一个更规范和更好的方式来做到这一点:

  1. 创建一个空的厦门国际银行
  2. 一个UIView添加到您的厦门国际银行,以便它是唯一的顶层对象(除了代理急救员和文件的所有者)
  3. 更改类新的UIView到CustomView
  4. 实例化XIB和检索CustomView例如像这样:

    CustomView *视= [[UINib nibWithNibName:@ “CustomView” 捆绑:无] instantiateWithOwner:self opti附件:无] [0];

  5. 将它添加到您的视图层次在视图控制器的viewDidLoad方法:

    [self.view addSubview:图]

确保在您的CustomView子类中覆盖-initWithCoder:以防您需要执行任何自定义初始化。我知道这很多,所以请让我知道这些步骤是否会让您感到困惑,或者您是否陷入困境。