
使用“ 如何在NSManagedObjectSwift扩展中创建托管对象子类的实例”中的方法? 您可以定义一个通用的辅助方法,该方法
self从调用上下文中推断出类型:
extension UIView { class func instantiateFromNib() -> Self? { return instantiateFromNibHelper() } private class func instantiateFromNibHelper<T>() -> T? { let topLevelObjects = NSBundle.mainBundle().loadNibNamed("CustomViews", owner: nil, options: nil) for topLevelObject in topLevelObjects { if let object = topLevelObject as? T { return object } } return nil }}这可以按照我的快速测试中的预期进行编译和运行。如果
MyCustomView是您的
UIView子类,那么
if let customView = MyCustomView.instantiateFromNib() { // `customView` is a `MyCustomView` // ...} else { // Not found in Nib file}为您提供的实例
MyCustomView,并且类型是自动推断的。
Swift 3更新:
extension UIView { class func instantiateFromNib() -> Self? { return instantiateFromNibHelper() } private class func instantiateFromNibHelper<T>() -> T? { if let topLevelObjects = Bundle.main.loadNibNamed("CustomViews", owner: nil, options: nil) { for topLevelObject in topLevelObjects { if let object = topLevelObject as? T { return object } } } return nil }}欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)