考虑以下代码,该代码基于与类同名的nib / xib加载视图...
extension UIView
{
static func loadFromNib<T:UIView>() -> T
{
let nibName = String(T)
let bundle = NSBundle(forClass: self)
return bundle.loadNibNamed(nibName, owner: nil, options: nil)[0] as! T
}
}
为了使用它,你需要这样做......
let view:SomeView = UIView.loadFromNib()
这样,T
从其分配的变量推断为SomeView
。
但是,如果可能的话,我正试图解决这个问题......
let view = SomeView.loadFromXib()
...调用类SomeView
中的loadFromNib
类型被调用,但我无法弄清楚如何定义T
相对于{{}的约束1}}来支持它。
这可能吗?