我试图迅速创建一个动态框架。 我的框架在情节提要中包含一个ViewController。 当推送通知进入我的框架时,我无法打开ViewController。 但是我试图使用下面的代码:
let bundle = Bundle(identifier: "my_Framework_bundleID")
let frameworkStoryboard: UIStoryboard = UIStoryboard.init(name: "MyFrameworkStoryboard", bundle: bundle)
let viewController = frameworkStoryboard.instantiateViewController(withIdentifier: "MyViewController")
self.present(viewController, animated: true, completion: nil)
这样做只会在MyViewController的viewDidLoad
方法中执行代码,而不会显示UI的负载。
我也尝试过:
let bundle = Bundle(identifier: "my_Framework_bundleID")
let controller = UIViewController(nibName: "MyViewController", bundle: bundle)
present(controller, animated: true, completion: nil)
这样做,我得到以下错误:
尝试在MyFramework上显示UIViewController:0x135124920。anotherViewController:0x133df1a40,其视图不在窗口层次结构中!
self.pushviewController()
和self.show()
不能正常工作。
我在这个问题上停留了两天。
答案 0 :(得分:0)
我想出了一种使之工作的方法
在我正在使用我的框架的应用程序的Appdelegate中,我像这样传递了rootviewcontroller的实例:
test.myFunc(withRootView: (self.window?.rootViewController)!)
现在在我的Framework中,我为其创建了一个xib和一个相应的UIView文件。 要导航到该UIView文件,我在“ myFunc”函数中使用了以下代码。
public func myFunc(withRootView rootview: UIViewController)
let modalView = MyUIViewClass(frame: self.view.bounds)
if rootview.presentedViewController == nil {
rootview.view.addSubview(modalView)
} else {
rootview.presentedViewController?.view.addSubview(modalView)
}