5

我正在尝试使用新WKWebView的 Swift 语言和 Web 查看器创建简单的 OS X 应用程序(不是 iOS)。我希望利用WKWebView课程更快的表现。

在项目 AppDelegate.swift 文件中,我有以下代码:

import Cocoa
import WebKit

@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {

    @IBOutlet weak var window: NSWindow!
    @IBOutlet var containerView : NSView! = nil

    var webView: WKWebView?

    var url = NSURL(string:"http://www.google.com/")
    var req = NSURLRequest(URL: url)
    self.webView!.loadRequest(req)

}

在 MainMenu.xib 文件中,我向主窗口添加了一个自定义视图对象并将其链接到@IBOutlet var containerView.

我在最后两行代码中收到错误消息:

var req = NSURLRequest(URL: url)

'应用代理。Type'没有名为'url'的成员</p>

self.webView!.loadRequest(req)

预期声明

非常感激任何的帮助。

4

3 回答 3

3

这花了我一段时间才弄清楚。

import Cocoa
@NSApplicationMain
class AppDelegate: NSObject, NSApplicationDelegate {
    @IBOutlet weak var window: NSWindow!
    var viewController : ViewController!

    func applicationDidFinishLaunching(aNotification: NSNotification) {
        self.viewController = ViewController(nibName:"ViewController", bundle:nil)
        self.window.contentView = self.viewController!.view
        self.window.contentViewController = self.viewController!
        self.viewController!.view.frame = self.window.contentView.bounds;
    }

    ...
}

这基本上用NSWindow我自己制作的视图和视图控制器替换了我的任何东西。我的ViewController类的实现如下所示:

import Cocoa
import WebKit
class ViewController: NSViewController {
    var webView: WKWebView?

    override func loadView() {
        self.webView = WKWebView()
        self.view = self.webView!

        var url = NSURL(string:"http://www.google.com/")
        var req = NSURLRequest(URL: url!)
        self.webView!.loadRequest(req)
    } 
}

所以基本上发生的事情是我创建了一个自定义视图控制器,将其设置WKWebView为它的视图,然后我将它和它的视图设置为NSWindow视图控制器和视图。

于 2015-02-08T17:27:38.310 回答
1

将最后三行(声明urlreq加载请求)移动到 AppDelegate 上的一个方法中,就像applicationDidFinishLaunching:(类似于@MinnesotaSteve 的回答所暗示的)。你不能有这样的顶级陈述。

于 2014-10-02T01:43:23.113 回答
0

检查一下,看看它是否可以作为起点:

导入 UIKit 导入 WebKit

class ViewController: UIViewController {

    @IBOutlet var containerView : UIView?
    var webView: WKWebView?

    override func loadView() {
        super.loadView()

        self.webView = WKWebView()
        self.view = self.webView!
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        var url = NSURL(string:"http://chart.finance.yahoo.com/z?s=AAPL&t=6m&q=l&l=on&z=s&p=m50,m200")
        var req = NSURLRequest(URL:url)
        self.webView!.loadRequest(req)
    }
}
于 2014-10-01T22:10:03.847 回答