在Dynamic Framework中使用情节提要

时间:2018-09-26 11:05:26

标签: ios swift frameworks storyboard viewcontroller

我试图迅速创建一个动态框架。 我的框架在情节提要中包含一个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()不能正常工作。

我在这个问题上停留了两天。

1 个答案:

答案 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)
     }