2014-10-01 33 views
4

我正在嘗試使用新的WKWebView和Swift語言使用Web查看器創建簡單的OS X應用程序(不是iOS)。我希望能夠利用WKWebView課程的更快性能。使用WKWebView查看器的簡單OS X應用程序

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

預計聲明

任何幫助將非常感激。

回答

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) 
    } 
} 
+1

謝謝。我已經嘗試過這個,它適用於iOS,但不適用於Mac OSX,我上面的嘗試是嘗試使其適用於OS X. – user1741348 2014-10-01 22:14:20

+2

是不是UIViewController特定於iOS而不是OSX? – Pablo 2015-02-26 09:41:19

1

移動最後三行(聲明urlreq和裝載要求)進在AppDelegate上的一個方法,如applicationDidFinishLaunching:(類似於@MennesotaSteve的答案所建議的)。你不能擁有這樣的頂級語句。

+0

謝謝你馬特。我已經按照建議將三行包裝到方法中,並且不再發生代碼錯誤。大!但是,當我運行應用程序時,我得到一個空白的灰色窗口。網絡視圖不會加載任何頁面。我檢查了自定義視圖對象,並將其連接到@IBoutlet var ContainerView。我錯過了什麼嗎? – user1741348 2014-10-02 06:20:26

+0

是的,你是。你實際上沒有顯示你的網頁視圖。您的容器視圖不包含任何內容。您可以使用代碼(使用addSubview)將Web視圖添加到容器視圖,或者使用界面構建器將您的Web視圖添加到IBOutlet中並直接指向它。 – tobygriffin 2014-12-16 10:15:06

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視圖控制器視圖並查看。