Ios 加载链接到xib的自定义UIView的最佳方式

Ios 加载链接到xib的自定义UIView的最佳方式,ios,objective-c,uiview,swift,xib,Ios,Objective C,Uiview,Swift,Xib,我正在对UIView(这将是一个基本菜单)进行子类化,这个自定义视图链接到一个用于 它的设计 这些文件是: 斯威夫特 CustomView.xib 我还使用了storyboard,它只有一个控制器(初始viewcontroller),以这种方式加载CustomView(在其viewDidLoad方法中): 我正在重写CustomView类的init方法,如下所示: override init(frame: CGRect) { super.init(frame:frame) v

我正在对UIView(这将是一个基本菜单)进行子类化,这个自定义视图链接到一个用于 它的设计

这些文件是:

  • 斯威夫特
  • CustomView.xib
我还使用了storyboard,它只有一个控制器(初始viewcontroller),以这种方式加载CustomView(在其viewDidLoad方法中):

我正在重写CustomView类的init方法,如下所示:

override init(frame: CGRect) {
    super.init(frame:frame)
    var view = UINib(nibName: "CustomView", bundle: nil).instantiateWithOwner(self, options: nil).lastObject() as CustomeView
    self.frame = frame
    view.frame = frame
    self.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
    view.autoresizingMask = UIViewAutoresizing.FlexibleWidth | UIViewAutoresizing.FlexibleHeight
    self.addSubview(view)
}
这很有效,但问题是我在另一个CustomView中有一个CustomView(使用
self.addSubview(view)

有更好的方法吗


非常感谢您的评论

这不是一个好办法

直接做

    self.menuView = UINib(nibName: "CustomView", bundle: nil).instantiateWithOwner(self, options: nil).lastObject() as CustomeView
    //set frame & mask of self.manuView if required
    self.view.addSubview(self.menuView!)
顺便说一句,如果使用xib,则无需从代码设置帧和掩码

您也可以使用以下方法进行操作:

self.menuView  =  NSBundle.mainBundle().loadNibNamed("CustomView", owner: self, options: nil)[0] as? CustomView
self.view.addSubview(menuView)

你能提供更多的信息吗?那么您有两个xib文件,并将一个视图从一个xib加载到另一个xib的视图中?您有两个单独的xib文件的原因是什么?这是很常见的,但要给出一个好的adivce,应该知道原因。所以我只有1个xib和一个自定义UIView连接到xib(通过CustomClass),我有一个故事板和一个viewcontroller连接到这个故事板。我正在以编程方式在初始viewcontroller(方法viewDidLoad)中加载自定义视图,这意味着所有者现在将是viewcontroller,而不是UIView的子类?“自制”组件不能像任何其他组件一样实例化(UIButton,…),这似乎真的很奇怪。。。
self.menuView  =  NSBundle.mainBundle().loadNibNamed("CustomView", owner: self, options: nil)[0] as? CustomView
self.view.addSubview(menuView)