загрузка веб-просмотра всегда равна нулю после отключения от сеанса tokbox

Я работаю над собственным приложением, которое использует веб-просмотр для большинства функций и использует видео tokbox для нативной видеосвязи. Когда я изначально загружаю приложение, веб-просмотр загружается нормально (он создается в построителе интерфейса).

Когда человек переходит на страницу с видео, я считаю, что API tokbox сводит веб-просмотр к нулю. Как только видео закончится, я вызываю session.disconnect() и пытаюсь перезагрузить свой веб-просмотр, но он продолжает говорить, что найдено nil, при попытке развернуть необязательно.

Код, загружающий веб-просмотр, выглядит так:

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, и переменные экземпляра показывают, что webView по-прежнему равен нулю даже после условия if.

РЕДАКТИРОВАТЬ

веб-просмотр был зацеплен щелчком по элементу управления и перетаскиванием в UIViewController, и это выглядит так:

@IBOutlet weak var webView: UIWebView!

функция loadApp() вызывается в двух местах: сначала в viewDidLoad(), где она работает нормально, но затем после вызова session.disconnect() вызывается метод делегата обратного вызова tokbox:

func sessionDidDisconnect(_ session: OTSession) {
    print("The client disconnected from the OpenTok session.")
    loadApp()
}

это второй раз / место, когда вызывается loadApp() и где он терпит неудачу.


person duxfox--    schedule 28.09.2017    source источник
comment
UIWebview возвращает nil, если он не может быть инициализирован, поэтому, даже если он проходит через этот оператор if, он все равно может быть nil. Где вы вызываете эту функцию?   -  person TNguyen    schedule 28.09.2017
comment
Вы уверены, что ваше свойство webView не объявлено как слабое свойство?   -  person Rendel    schedule 28.09.2017
comment
@TNguyen Я обновляю вопрос, где вызываю функцию   -  person duxfox--    schedule 28.09.2017
comment
@TNguyen, хорошо, попробую   -  person duxfox--    schedule 28.09.2017
comment
@TNguyen, это действительно сработало, поэтому, если вы поставите это в качестве ответа, я приму это   -  person duxfox--    schedule 02.10.2017
comment
@ duxfox - сделает так, чтобы другие могли видеть :)   -  person TNguyen    schedule 02.10.2017


Ответы (1)


Я не думаю, что для webView нужно установить значение nil, если вы настроили его как IBOutlet. Попробуйте просто сделать так, чтобы webView var webView: UIWebView? была переменной внутри класса, а затем создайте его экземпляр вручную, отрегулируйте ограничения и разместите его соответствующим образом.

person TNguyen    schedule 02.10.2017