ios - 将使用两者之一。哪一个是未定义的。从 TableView 导航到 Web View

标签 ios swift uitableview webview

我正在尝试制作一个应用程序,使用户能够从表格中选择一个网站以转到该网站。我有一个嵌入在导航 Controller 中的 UITableViewController 和一个从表格单元格到 web View 的 segue。但是每次我从表格 View 中单击一个网站时,它都会将我带到一个空白页面一秒钟,然后再转到我的网站。我希望能够直接进入网页,中间没有空白 View 。我该怎么办?谢谢!

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

最佳答案

如果您正在为 iOS 8 或更高版本的 WebViewController 编写此代码,则应导入 WebKit。

然后你的 UIWebView 变成一个 WKWebView 并且 webView.loadRequest(URLRequest(url: url))

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

此外,这可能是我的偏好,但您不需要将 getAllWebsites 设为静态函数。如果您在 View Controller 中实例化 WebSiteList,您可以调用该函数以及您以后可能需要的任何其他函数。

关于ios - 将使用两者之一。哪一个是未定义的。从 TableView 导航到 Web View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44557210/

相关文章:

ios - 如何在 CALayer.contents 中添加 Stretchable UIImage?

ios - 缩放圆圈uiview刚好足以填满屏幕

swift - viewDidLoad 上的 NSView alpha 不显示

iphone - UICollectionView 的奇怪动画行为(插入和删除项目)

ios - 当用户使用 swift 单击 TableView 中的一个单元格时,如何立即运行计时器?

ios - swift xcode : How do I draw on the same view as a text field plus a list of buttons?

ios - 无法使用类型的参数列表调用 'bindToPort'

Swift - 无法将类型 '__NSCFString' 的值转换为 'NSDictionary'

ios - 如何使用 XCUITest 测试 UIImageView 是否包含具有特定名称的图像?

ios - 在 UITableViewCell 中显示多个方框