我正在构建一个自定义 RN 模块,我想将 Swift UIViews 从我的库中公开给其他人,以便在他们的 RN 应用程序中使用。我有一个使用 Swift UIView 类的基本示例,该类显示在我的 RN 模块示例应用程序中:
@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 文件?我找不到关于此的任何文档。有没有人有任何建议或知道这是否可能?