2

私は自分のライブラリから他の人に Swift UIView を公開して RN アプリで使用したいカスタム 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()
  }
}

(myCustomView fromNib() init を使用して) nib を使用して TestView をロードしようとすると、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")
    }

}

.xib ファイルは RN モジュールで "許可" されていますか? これに関するドキュメントは見つかりませんでした。誰か提案がありますか、これが可能かどうか知っていますか?

4

0 に答える 0