У меня есть пользовательский фреймворк Swift в Cocoapod, завернутый в плагин NativeScript.Мой код NativeScript TypeScript может делать все, что ему нужно для доступа к классам и методам в классах в рамках.Это само по себе было много работы, чтобы выяснить все нюансы.Теперь я в последней части, которая состоит в том, чтобы уменьшить пользовательский viewController в фреймворке с UIViewController
.Следующий код работает, так как NativeScript фактически загружает мою раскадровку и контроллер:
var podBundle = NSBundle.bundleForClass(CustomViewController)
var bundleUrl = podBundle.URLForResourceWithExtension("MyFramework", "bundle")
var bundle = NSBundle.bundleWithURL(bundleUrl)
var storyboard = UIStoryboard.storyboardWithNameBundle("Main", bundle)
var viewController = storyboard.instantiateViewControllerWithIdentifier("CustomViewControllerID")
console.log(viewController)
console.log(viewController instanceof CustomViewController)
application.ios.rootController.presentViewControllerAnimatedCompletion(viewController, true, null)
Первый console.log
фактически регистрирует полный класс, как в MyFramework.CustomViewController
: hexcodehere
секунда console.log
также записывает значение true, что означает, что она знает, что тип переменной viewController действительно CustomViewController
.
Проблема в том, что мне нужно вызвать функцию в CustomViewController
, поэтому мне нужно уменьшить:
storyboard.instantiateViewControllerWithIdentifier("CustomViewControllerID") as CustomViewController
Но компилятор говорит "Не удается найти имя" для CustomViewController
.Если я попытаюсь MyFramework.CustomViewController
, в MyFramework появится сообщение «Не удается найти имя».Обратите внимание NSBundle.bundleForClass(CustomViewController)
работает.Таким образом, это означает, что CustomViewController известен компилятору.
Если я импортирую плагин вверху файла:
import { CustomViewController } from "myplugin"
, он говорит «не удается найти модуль» для myplugin.Имейте в виду, я могу получить доступ ко всем классам в этом плагине.Так что плагин определенно правильно установлен.Он устанавливается из локального пути к файлу, а не из git.
Кажется, мне не хватает чего-то чертовски простого.Но я не могу понять это ради своей жизни.
Я рад помочь другим, кто хочет использовать раскадровку и классы Swift и классы Swift и т. Д.