Используйте раскадровки в динамическом каркасе - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь создать динамический фреймворк в swift.Моя платформа содержит ViewController внутри раскадровки.Я не могу открыть свой ViewController, когда внутри моей платформы появляется push-уведомление.Однако я попытался использовать следующий код:

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)

При выполнении этого выполняется только код внутри метода viewDidLoad MyViewController, но не отображается загрузка пользовательского интерфейса.

Я также пробовал это:

let bundle = Bundle(identifier: "my_Framework_bundleID")
let controller = UIViewController(nibName: "MyViewController", bundle: bundle)
present(controller, animated: true, completion: nil)

При этом я получаю следующую ошибку:

Попытка представить UIViewController: 0x135124920 на MyFramework.anotherViewController: 0x133df1a40, чье представление отсутствует в иерархии окон!

self.pushviewController() и self.show() также не работают.

Я застрял в этой проблеме на два дня.

1 Ответ

0 голосов
/ 27 сентября 2018

Я нашел способ заставить его работать

В 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)
     }
...