iOS - 无法在捆绑

时间:2016-10-07 01:00:18

标签: ios swift xcode

我正在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开发相对较新,所以我可能会遗漏一些基本的东西。

1 个答案:

答案 0 :(得分:1)

我认为问题可能是您在New-PSDrive尚未加载时尝试将其添加到WKWebView

view在加载视图的过程中很早就设置好了。尝试在IBInspectableWKWebView中添加viewDidLoad

viewWillAppear