我正在将我的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)
Das*_*ash 18
NSBundle.mainBundle().loadNibNamed("Games-New", owner: nil, options: nil)[0]
Run Code Online (Sandbox Code Playgroud)
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)
斯威夫特3
owner
要指定为nib的File的Owner对象的对象.
options
包含打开nib文件时要使用的选项的字典.
首先,
如果你没有先定义,然后抓取所有视图..所以你需要抓住该集内的一个视图frist
.
Bundle.main.loadNibNamed("yourUIView", owner: self, options: nil)?.first as! yourUIView
Run Code Online (Sandbox Code Playgroud)
用它来加载你的笔尖.
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)