我正在尝试使用新的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)
“的AppDelegate。类型'没有名为'url'的成员
self.webView!.loadRequest(req)
预期声明
非常感谢任何帮助。
答案 0 :(得分: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
视图控制器和视图。
答案 1 :(得分:1)
检查一下,看看它是否有用作为起点:
导入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)
}
}
答案 2 :(得分:1)
将最后三行(声明url
,req
并加载请求)移动到AppDelegate上的方法中,如applicationDidFinishLaunching:
(类似于@MinnesotaSteve的答案所示)。你不能拥有这样的顶级陈述。