Вы можете выдвинуть новый контроллер несколькими способами, например, используя segue или создавая экземпляр контроллера из раскадровки.
Я кратко расскажу о последнем.Создайте ViewController с webView в вашей раскадровке и присвойте ему идентификатор раскадровки как WebViewController.Создайте подкласс UIViewController с именем WebViewController и свяжите его с раскадровкой.Затем используйте приведенный ниже код, чтобы нажать его.
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
let stories = storyData[indexPath.row]
guard let storyImageUrl = URL(string: stories.url) else {return}
let webController = UIStoryboard(name: "Main", bundle: nil).instantiateViewController(withIdentifier: "WebViewController") as! WebViewController
webController.urlToLoad = storyImageUrl
self.navigationController?.pushViewController(webController, animated: true)
}
В приведенном выше примере предполагается, что ваш текущий контроллер View встроен в UINavigationViewController.Затем в вашем представлении WebViewController viewDidLoad вы можете настроить кнопку возврата
var urlToLoad: String?
override func viewDidLoad() {
// do your stuff
// Back button
self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: "Back", style: UIBarButtonItem.Style.plain, target: self, action: #selector(self.goBack))
guard let storyImageUrl = URL(string: urlToLoad) else {return}
webView.load(URLRequest(url: storyImageUrl))
}
@objc func goBack() {
if webView.canGoBack {
webView.goBack()
} else {
self.navigationController?.popViewController(animated: true)
}
}
Вы также можете использовать segue.Надеюсь, это помогло.