在objective-c 中,它可以在初始方法中通过

-(id)init{
    self = [[[NSBundle mainBundle] loadNibNamed:@"ViewBtnWishList" owner:0 options:nil]     objectAtIndex:0];
return self;
}

但当我在Swift 这样做的时候

init(frame: CGRect) {
    self = NSBundle.mainBundle().loadNibNamed("ViewDetailMenu", owner: 0, options: nil)[0] as? UIView
}

显示方法错误时,无法分配给self.

推荐答案

for Swift 4

extension UIView {
    class func loadFromNibNamed(nibNamed: String, bundle: Bundle? = nil) -> UIView? {
      return UINib(
          nibName: nibNamed,
          bundle: bundle
      ).instantiate(withOwner: nil, options: nil)[0] as? UIView
  }
}

for Swift 3

您可以在UIView上创建扩展:

extension UIView {
    class func loadFromNibNamed(nibNamed: String, bundle: NSBundle? = nil) -> UIView? {
        return UINib(
            nibName: nibNamed,
            bundle: bundle
        ).instantiateWithOwner(nil, options: nil)[0] as? UIView
    }
}

Note:使用UINib更快,因为它为您提供缓存.

然后你可以做:

ViewDetailItem.loadFromNibNamed("ViewBtnWishList")

您将能够在任何视图上重用该方法.

Swift相关问答推荐

如何返回JSON数据?

带有文本输入自动大小写修饰符的SwiftUI Textfield问题

按SWIFT中每个ID的最大值进行筛选/排序

SwiftUI,如何更改具有多个按钮和一个布尔条件的一个按钮标签

在SwiftUI中如何预览嵌套的ScrollView,以避免触发可刷新修饰符

本地对象的异步/等待引用捕获总是安全的还是理论上不安全?

从一个范围减go 多个范围

如何打印出此 struct 中的数据?

如何删除 macOS 中的所有命令?

动画偏移正在 destruct 按钮 SwiftUI

当使用 CGFloat 而不是数字文字时,为什么 node 的位置会发生变化?

SwiftUI 分段 Select 器的问题

为什么 performSegue() 不调用 shouldPerformSegue()

创建 ViewModel 时 iOS 模拟器上的黑屏

符合协议 - 错误?

如何获取 NSRunningApplication 的参数?

关闭 UITableViewRowAction

Swift 中的 CommonHMAC

使用 Swift 以编程方式自定义 UITableViewCell

在情节提要中设置的 UITableViewCell 的恢复 ID 和标识符有什么区别