Ios 加载链接到xib的自定义UIView的最佳方式
我正在对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
- 斯威夫特
- CustomView.xib
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)