断开与tokbox会话后,加载webview始终为零

时间:2017-09-28 13:29:07

标签: ios swift webview tokbox

我正在开发一个原生应用,它使用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。

修改

通过单击控件并拖动到UIViewController来链接webview,它看起来像这样:

@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()的第二个时间/地点,以及失败的地方。

1 个答案:

答案 0 :(得分:1)

当你将webView设置为IBOutlet时,我认为不应将webView设置为nil。尝试让webView为var webView: UIWebView?一个变量在类中,然后手动实例化并调整约束并相应地定位它。