我正在Swift中编写一个iOS应用程序,需要在WKWebView
中显示各种静态HTML文件。
我的计划是创建一个视图控制器,其中包含要显示的文件名称的@IBInspectable
属性。 HTMLViewController
将加载指定的文件,然后创建WKWebView
以显示它。
当我在模拟器(或我的设备)上运行应用程序并加载视图时,我在Xcode控制台中收到以下错误消息:
无法在( MyApp .HTMLViewController)上设置(filePath)用户定义的检查属性:无法在捆绑中加载NIB:' NSBundle< / Users / me /库/开发商/ CoreSimulator /设备/ A5982A49-71CD-4F06-ABD7-01EBBF001698 /数据/容器/捆绑/应用/ 032D479A-091B-4FAB-9CB8-82DC72B99E89 / MyApp的的.app> (加载)'名字' pyN-vU-Kur-view-0DN-tc-q8g'
该应用确实加载并运行。 HTMLViewController被设置为" show"从UITableView上的附件中获取。只有在我点击附件时才会出现此错误。该应用程序仍然显示(空)视图,我能够使用导航控制器返回到UITableView就好了。
使用一些grep
,我发现pyN-vU-Kur
是视图控制器的对象ID,而0DN-tc-q8g
是其中的UIView的ID。
我检查了我的Build Phases,并注意到故事板列在Copy Bundle Resources部分。我想也许这只是一个问题,在我的故事板中引用被破坏了,所以我删除了场景并重新创建它,但我仍然看到同样的错误。我还看到一些帖子谈论检查检查员的目标成员资格。我已经验证包含HTML文件的content
文件夹,故事板和视图控制器都已选中目标成员资格。
调试显示正在加载HTML文件(我将内容记录到控制台)并且正在调用applyContent
方法,并且在调用WKWebView()
时似乎发生错误。
我的HTMLViewController.swift
代码如下:
import UIKit
import WebKit
@IBDesignable
class HTMLViewController: UIViewController {
@IBInspectable
var filePath: String! = "" {
didSet {
if let path = Bundle.main.path(forResource: filePath, ofType: "html", inDirectory: "content") {
do {
let contents = try String(contentsOfFile: path)
self.applyContent(html: contents)
} catch {
print("problem reading file \(filePath)")
}
} else {
print("problem locating file \(filePath)")
}
}
}
func applyContent(html: String) {
let webView = WKWebView(frame: self.view.bounds)
webView.loadHTMLString(html, baseURL: nil)
self.view.addSubview(webView)
}
}
导致此错误的原因是什么,我该如何解决?我对Swift和iOS开发相对较新,所以我可能会遗漏一些基本的东西。
答案 0 :(得分:1)
我认为问题可能是您在New-PSDrive
尚未加载时尝试将其添加到WKWebView
。
view
在加载视图的过程中很早就设置好了。尝试在IBInspectable
或WKWebView
中添加viewDidLoad
。
viewWillAppear