什么相当于Swift中的loadNibNamed

Mic*_*ers 20 swift

我正在将我的Objective-C代码转换为Swift,并且想知道什么是与此代码相当的swift

[[[NSBundle mainBundle] loadNibNamed:@"Games-New" owner:nil  
options:nil] firstObject]; 
Run Code Online (Sandbox Code Playgroud)

谢谢.

Tyl*_*ong 31

也许API已经改变了.第三个参数loadNibNamed不再是options,它是topLevelObjects.以下代码适用于我:

var objects: NSArray?
NSBundle.mainBundle().loadNibNamed("MyView", owner: self, topLevelObjects: &objects)
Run Code Online (Sandbox Code Playgroud)

  • 对于OS X 10.10,这比当前接受的答案更正确. (2认同)

Das*_*ash 18

NSBundle.mainBundle().loadNibNamed("Games-New", owner: nil, options: nil)[0]
Run Code Online (Sandbox Code Playgroud)

  • 对我来说,Xcode 6 Beta 5唠叨了"选项",它声称应该是"topLevelObjects". (4认同)

ary*_*axt 13

这是一个UIView扩展

public extension UIView {

    public class func instantiateFromNib<T: UIView>(viewType: T.Type) -> T {
        return NSBundle.mainBundle().loadNibNamed(String(describing: viewType), owner: nil, options: nil)?.first as! T
    }

    public class func instantiateFromNib() -> Self {
        return instantiateFromNib(self)
    }

}
Run Code Online (Sandbox Code Playgroud)

用法

let awesomeView = AwesomeView.instantiateFromNib()
Run Code Online (Sandbox Code Playgroud)

要么

let awesomeView = UIView.instantiateFromNib(AwesomeView.self)
Run Code Online (Sandbox Code Playgroud)


Naz*_*san 7

斯威夫特3


name
nib文件的名称,不需要包含.nib扩展名.

owner
要指定为nib的File的Owner对象的对象.

options
包含打开nib文件时要使用的选项的字典.

首先,
如果你没有先定义,然后抓取所有视图..所以你需要抓住该集内的一个视图frist.

Bundle.main.loadNibNamed("yourUIView", owner: self, options: nil)?.first as! yourUIView
Run Code Online (Sandbox Code Playgroud)


Kyl*_*egg 6

用它来加载你的笔尖.

let myView = NSBundle.mainBundle().loadNibNamed("MyView", owner: nil, options: nil)[0] as UIView
Run Code Online (Sandbox Code Playgroud)

然后您可以像往常一样将其添加到视图中.

view.addSubview(myView)
Run Code Online (Sandbox Code Playgroud)