繁体   English   中英

XIB文件未从框架加载

[英]XIB file not loading from framework

我创建了可可触摸框架,在其中创建了UIViewController类,该类在xib文件中xib ui。 我已经完成了xib和控制器文件(例如连接到控制器类的文件所有者)之间的必需绑定。

我已经在单独的项目中创建了另一个xib和控制器文件,作为普通的ios应用程序。 在那里,我试图呈现此ViewController,它将出现在屏幕上,但是当我尝试加载框架中存在的控制器时,只有黑屏出现在屏幕上。

我在xcode的build phases copy bundle resources添加了xib文件。 但是当我在本地Pod安装框架时,我只能看到控制器文件以及其他swift文件,而看不到xib文件。

let oPController  = OPController()

let oNav = UINavigationController(rootViewController: oPController)
controller.present(oNav, animated: true, completion: nil)

当框架包含xib文件时,需要特别注意吗?

注意当我查看项目中已安装的Pod时,那里看不到任何xib文件。

尝试将其添加到podspec文件

  s.source_files = "ReusableViewController/*.{swift,h,m,xib,storyboard}"
  s.resource_bundles = {
    'MyFramework' => ['Pod/Classes/**/*.{storyboard,xib,xcassets,json,imageset,png}']
  }
  s.exclude_files = "Classes/Exclude"
  s.swift_version = "4.0"

检查此链接以从框架加载您的xib文件

https://github.com/Ajithram007/reusableVC

let nibName: String = "SignInView"
var view: UIView!

public override init(frame: CGRect) {
    super.init(frame: frame)
    setup()
}
public required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    setup()
}

func setup() {
    self.view = UINib(nibName: self.nibName, bundle: Bundle(for: type(of: self))).instantiate(withOwner: self, options: nil)[0] as! UIView
    self.view.frame = bounds
    self.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
    self.addSubview(self.view)
}

在框架中使用xib创建任何ViewController时。 您必须做这些事。

  1. 如果使用cocoapod库,请确保已将xib添加为podspec文件中的资源。

  2. 根据Sulthan的回答并进行了测试,当使用xib动态加载任何UIViewController类且某个类存在于某个框架中时,则必须在动态加载类时显式提供bundle的上下文

像这样打电话

let oPController = OPController(nibName: "OPController", bundle:
    Bundle(for:OPController.self))

这个班级看起来像

class OPController : UIViewController {
    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: Bundle?) {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM