带有Swift UIView和.xib文件的React Native模块

2lpgd968  于 2023-11-16  发布在  Swift
关注(0)|答案(1)|浏览(108)

我正在构建一个自定义RN模块,我希望将我的库中的Swift UIView暴露给其他人,以便在他们的RN应用中使用。我有一个基本的示例,在我的RN模块示例应用中显示了Swift UIView类:

@objc(TestViewManager)
class TestViewManager : RCTViewManager {
    
  override static func requiresMainQueueSetup() -> Bool {
    return true
  }

  override func view() -> UIView! {
    //let myCustomView: TestView = UIView.fromNib()
    return TestView()
  }
}

字符串
当我尝试使用nib加载TestView时(使用myCustomView fromNib()init),RN应用程序构建并运行,但随后崩溃。这是我的UIView扩展:

extension UIView {
    class func fromNib<T: UIView>() -> T {
        return Bundle(for: T.self).loadNibNamed(String(describing: T.self), owner: nil, options: nil)![0] as! T
    }
}


TestView.swift -我的.xib文件名为TestView.xib,文件所有者设置为TestView.swift:

public class TestView: UIView {

    override init(frame: CGRect) {
      super.init(frame: frame)
    }

    required init?(coder aDecoder: NSCoder) {
      fatalError("init(coder:) has not been implemented")
    }

}


RN模块中“允许”.xib文件吗?我找不到任何关于此的文档。有人有任何建议或知道这是否可能吗?

piztneat

piztneat1#

你需要把xib放到bundle中,然后用bundle加载xib

相关问题