【发布时间】:2019-10-24 10:08:18
【问题描述】:
我正在为一个小部件构建框架。我有两个文件如下:
widgetBuilder.swift 和
webWidget.swift
widgetBuilder.swift 是带有 getter 和 setter 的文件,它从将要使用这个小部件框架的应用程序中获取某些值。
来自widgetBuilder.swift的代码
import Foundation
class WidgetBuilder {
private var userId: String!
private var emailId: String!
public func setuserId(userId: String) -> WidgetBuilder{
self.userId = userId
return self
}
public func setEmailId(emailId: String) -> WidgetBuilder{
self.emailId = emailId
return self
}
public func build() -> WidgetBuilder{
// Wanted to load the webview from here
}
}
初始化完成后我会调用构建函数,我想加载webWidget.swift的ViewController
来自webWidget.swift的代码
class webWidget: UIViewController, WKUIDelegate, WKNavigationDelegate {
var webView: WKWebView!
override func loadView() {
webView = WKWebView()
webView.uiDelegate = self
webView.navigationDelegate = self
view = webView
self.loadWebView()
}
public func loadWebView(){
let url = URL(string: "https://www.google.com")!
webView.load(URLRequest(url: url))
webView.allowsBackForwardNavigationGestures = true
}
public func loadWidgetScreen() {
//Something is not correct here
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let controller = storyboard.instantiateViewController(withIdentifier: "WidgetController")
self.present(controller, animated: true, completion: nil)
}
}
如何从widgetBuilder.swift 加载 webWidget 视图并传递一些数据?
【问题讨论】:
-
添加导入 UIKit,现在您可以在 widgetBuilder.swift 中使用 uiviewcontroller 对象
-
我在导入 UIKit 后得到了一个新的:
Warning: Attempt to present <UIViewController: 0x7fc71dd1d080> on <widget_wrapper.Widget: 0x7fc71df328d0> whose view is not in the window hierarchy!这是什么意思? -
使用哪个 ref 来呈现视图控制器?你能显示代码吗?
-
我在 widgetBuilder 中为 webWidget 创建了一个对象并尝试调用
loadWidgetScreen() -
在这种情况下,您的 webWidget 的视图当前未显示在屏幕上
标签: ios swift xcode11 ios-frameworks