В настоящее время я столкнулся с проблемой, которая всегда работала хорошо в Objective-C, но я не могу показаться, чтобы получить он работает в Swift (в частности, v3). Все это построено с помощью раскадровки. У меня есть две отдельные контроллеры Вид:
- ViewController: WKWebView & UIButtonItems
- SideMenuTableView: UITableView & UIButtons
В настоящее время SideMenu появляется снова, покадрово, на вершине ViewController и перечисляет набор действий через UIButtons. Думаю, я просто уйду из самого упрощенного примера, просто чтобы убрать эту идею. В этом примере я пытаюсь перезагрузить WKWebView (ViewController) из крана UIButton (SideMenuTableView). Ниже приводится более четкое представление о том, что я пытаюсь получить в если что-то до сих пор неясно:
В настоящее время я могу назвать SideMenu с простой раскадровки Segue (Kind: Present Modally)
. Кроме того, я могу отклонить SideMenu, который был реализован в простой функции close()
. Однако, при попытке вызвать функцию обновления, я получаю следующее сообщение об ошибке:
fatal error: unexpectedly found nil while unwrapping an Optional value
код
import UIKit
import WebKit
class ViewController: UIViewController, UINavigationControllerDelegate, WKNavigationDelegate {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let webURL = URL(string: "https://google.ca")
let webRequest = URLRequest(url: webURL!)
webView.load(webRequest)
func refresh() {
webView.reload()
}
}
import Foundation
class SideMenuTableView: UITableViewController {
@IBAction fileprivate func close() {
self.dismiss(animated: true, completion: nil)
}
@IBAction func refresh(sender: AnyObject!) {
ViewController().refresh()
close()
}
}
EDIT: Обновленный переход кода.
// MARK: - Navigation
// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
if let vc = segue.destination as? SideMenuTableView {
vc.delegate = self
}
}
}
Возможный дубликат [Что делает «фатальная ошибка: неожиданно найденная нуль при разворачивании необязательного значения» означает?] (Http://stackoverflow.com/questions/32170456/what-does-fatal-error-unexpectedly-found- nil-while-unwrapping-an-optional-valu) – JAL
BTW 'ViewController(). refresh()' не имеет никакого смысла. Вы инициализируете ** новый контроллер представления ** и вызываете 'refresh' на нем? – JAL
Спасибо @JAL! Мне было интересно, что я делаю именно с этим кодом. –