我正在尝试创建一个应用程序,使用户可以从表中选择一个网站进入该网站。我有一个嵌入在导航控制器中的UITableViewController和一个从表格单元格到网页视图的segue。但每次我从表格视图中点击一个网站,它会引导我进入一个空白页面,然后再到我的网站。我希望能够直接进入网页,中间没有空白视图。我怎么能这样做?谢谢!
TableViewController代码:
import UIKit
class WebTableViewController: UITableViewController {
var websites = [Website]()
override func viewDidLoad() {
super.viewDidLoad()
websites = WebsiteList.getAllWebsites()
}
override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return websites.count
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
let website = websites[indexPath.row]
cell.textLabel?.text = website.name
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
if let vc = storyboard?.instantiateViewController(withIdentifier: "Website") as? WebsiteViewController{
vc.selectedWebName = websites[indexPath.row].name
navigationController?.pushViewController(vc, animated: true)
}
}
}
WebViewController代码:
import UIKit
import WebKit
class WebsiteViewController: UIViewController {
var webView: WKWebView!
var selectedWebName = String()
override func viewDidLoad() {
super.viewDidLoad()
title = selectedWebName
webView = WKWebView()
view = webView
if let url = URL(string: "https://" + selectedWebName){
webView.load(URLRequest(url: url))
}
webView.allowsBackForwardNavigationGestures = true
}
}
网站结构:
import Foundation
struct Website{
var name: String
}
struct WebsiteList{
static func getAllWebsites() -> [Website]{
return [
Website(name: "youtube.com"),
Website(name: "apple.com"),
Website(name: "hackingwithswift.com")
]
}
}
A blank page between table view and web view after clicking on the back arrow from the previous view
答案 0 :(得分:0)
如果您为WebViewController为iOS 8或更高版本编写此文件,则应导入WebKit。
然后你的UIWebView变成了WKWebView和 webView.loadRequest(URLRequest(url:url))
成为:webView.load((URLRequest(url:url))
这也许是我的偏好,但你不需要让getAllWebsites成为静态函数。如果在视图控制器中实例化WebSiteList,则可以调用该函数以及稍后可能需要的任何其他函数。