为什么不在Playgrounds中显示WebView预览?

时间:2014-11-30 21:49:46

标签: cocoa swift uiwebview

在我的Xcode游乐场中,我一直在尝试设置WebView / UIWebView,但无法预览iOS或OS X版本。 当我尝试运行iOS代码时,我在控制台中收到此错误:

  

nwi_state:注册失败(1000000)

一旦我实例化UIWebView,就会出现此错误。这是我的代码:

import UIKit

let wv = UIWebView(frame: CGRectMake(0, 0, 255, 255))
let url = NSURL(string: "http://www.google.com")
let req = NSURLRequest(URL: url!)
wv.loadRequest(req)
wv // This is for previewing in the Playground

使用Cocoa时,我的控制台没有出现任何错误,但我无法使用QuickLook图标或添加到我的时间轴来预览WebView。我的Cocoa代码:

import Cocoa
import WebKit

let mainWeb = WebView(frame: NSRect(x: 0, y: 0, width: 255, height: 255))
let url = NSURL(string: "http://www.google.com")
let req = NSURLRequest(URL: url!)
mainWeb.mainFrame.loadRequest(req)
mainWeb // This is for previewing in the Playground

我在OS X Yosemite 10.10.1上运行Xcode 6.1。我的互联网连接很好,据我所知,我没有修改任何可能导致此类问题的文件。可能是造成这个问题的原因是什么?

2 个答案:

答案 0 :(得分:1)

用于在游乐场中预览视图的功能是XCPShowView(identifier: String,view: NSView/UIView)。所以这将在OS X游乐场中运行:

import Cocoa
import WebKit
import XCPlayground


let mainWeb = WebView(frame: NSRect(x: 0, y: 0, width: 255, height: 255))
let url = NSURL(string: "http://www.google.com")
let req = NSURLRequest(URL: url!)
mainWeb.mainFrame.loadRequest(req)
XCPShowView("my web view", mainWeb)

似乎iOS游乐场必须在某个Xcode项目中才能使同样的事情发挥作用。此外,必须在该操场的文件检查器中检查'Run in Full Simulator'选项。之后,网页视图将显示加载谷歌页面,但伴随着一些关于未能获得sanbox扩展的令人讨厌的错误消息。

答案 1 :(得分:0)

升级Ivica M.对Swift 3的回答:

import PlaygroundSupport
import WebKit

public let width = 568
public let height = 320

var ActionBlockKey: UInt8 = 0

public let container = UIView(frame: CGRect(x: 0, y: 0, width: width, height: height))

let mainWeb = WKWebView(frame: container.frame)
let url = URL(string: "https://www.google.com")
let req = URLRequest(url: url!)
mainWeb.load(req)

container.addSubview(mainWeb)

PlaygroundPage.current.liveView = container
PlaygroundPage.current.needsIndefiniteExecution = true