我正在开发一个原生应用,它使用webview来实现大部分功能,并使用tokbox视频进行原生视频通信。当我最初加载应用程序时,webview加载正常(它在界面构建器中创建)。
当某人访问视频页面时,我相信tokbox API会使webview无效。视频结束后,我调用session.disconnect()
并尝试重新加载我的网页视图,但在尝试解包可选内容时,它一直说nil。
加载webview的代码如下所示:
func loadApp() {
let htmlFile = Bundle.main.path(forResource: "index", ofType: "html")
let html = try? String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8)
// this was added in hopes of initializing the webview again
if webView == nil {
webView = UIWebView(frame: self.view.bounds)
self.view = webView
}
webView.delegate = self
webView.frame = view.bounds
webView.loadHTMLString(html!, baseURL: nil)
}
它在webView.delegate = self
处失败并且实例变量显示即使在if条件之后webView仍然是nil。
@IBOutlet weak var webView: UIWebView!
loadApp()
函数在2个位置被调用,首先在viewDidLoad()
中可以正常工作,但是在调用session.disconnect()
之后,调用了tokbox回调委托方法:
func sessionDidDisconnect(_ session: OTSession) {
print("The client disconnected from the OpenTok session.")
loadApp()
}
这是调用loadApp()
的第二个时间/地点,以及失败的地方。
答案 0 :(得分:1)
当你将webView设置为IBOutlet
时,我认为不应将webView设置为nil。尝试让webView为var webView: UIWebView?
一个变量在类中,然后手动实例化并调整约束并相应地定位它。