带有WKWebView查看器的简单OS X应用程序

带有WKWebView查看器的简单OS X应用程序,webview,swift,wkwebview,Webview,Swift,Wkwebview,我正在尝试使用新的WKWebView和Swift语言创建一个简单的OSX应用程序(而不是iOS),其中包含一个web查看器。我希望利用WKWebView类更快的性能 在projects AppDelegate.swift文件中,我有以下代码: import Cocoa import WebKit @NSApplicationMain class AppDelegate: NSObject, NSApplicationDelegate { @IBOutlet weak var wind

我正在尝试使用新的
WKWebView
和Swift语言创建一个简单的OSX应用程序(而不是iOS),其中包含一个web查看器。我希望利用
WKWebView
类更快的性能

在projects 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)

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

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

var-req=NSURLRequest(URL:URL)

”他说。类型“”没有名为“url”的成员

self.webView!。加载请求(req)

预期申报


任何帮助都将不胜感激。

请查看此内容,看看它是否有助于作为起点:

导入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)
    }
}

将最后三行(声明
url
req
并加载请求)移动到AppDelegate上的方法中,如
ApplicationIDFinishLaunching:
(类似于@MinnesotaSteve的回答所建议的)。你不可能有这样的顶级语句。

我花了一段时间才弄明白

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
视图控制器和视图。

谢谢。我已经试过了,它对iOS非常有效,但对Mac OSX却没有。我上面的尝试是尝试将其调整为适用于OS X。UIViewController不是针对iOS而不是OSX的吗?谢谢Matt。我已经按照建议将这三行代码包装到一个方法中,不再出现代码错误。伟大的然而,当我运行应用程序时,我看到一个空白的灰色窗口。web视图未加载任何页面。我已经检查了自定义视图对象,它连接到@IBoutlet var ContainerView。我错过什么了吗?是的,你错过了。在任何情况下,您都不会实际显示web视图。您的容器视图不包含任何内容。使用代码(使用addSubview)将web视图添加到容器视图中,或者使用interface builder将web视图放入并直接指向它的IBOutlet。