将使用两者之一。哪一个未定义。从表视图导航到Web视图

时间:2017-06-15 01:39:23

标签: ios swift uitableview webview

我正在尝试创建一个应用程序,使用户可以从表中选择一个网站进入该网站。我有一个嵌入在导航控制器中的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")
        ]
    }
}

Web view

A blank page between table view and web view after clicking on the back arrow from the previous view

1 个答案:

答案 0 :(得分:0)

如果您为WebViewController为iOS 8或更高版本编写此文件,则应导入WebKit。

然后你的UIWebView变成了WKWebView和     webView.loadRequest(URLRequest(url:url))

成为:webView.load((URLRequest(url:url))

这也许是我的偏好,但你不需要让getAllWebsites成为静态函数。如果在视图控制器中实例化WebSiteList,则可以调用该函数以及稍后可能需要的任何其他函数。