我正在尝试创建一个自定义 UIViewController 数组,其中每个 Controller 都包含一个 UIWebView。在 for 循环中,在“loadRequest”处我收到“ fatal error :在展开可选值时意外发现 nil”。肯定有一个带有 URL 的 NSURLRequest 被传入。如果我注释掉“reportVC.reportWebView.loadRequest(request)”,一切都运行得很好。
func createViewControllers(callback:(controllers:[ReportViewController])->()){
var urls = [NSURL]()
getPDFs { (pdfURLs) -> () in
urls = pdfURLs
let mainStoryboard: UIStoryboard = UIStoryboard(name: "Main",bundle: nil)
var reportControllers = [ReportViewController](count: urls.count, repeatedValue: ReportViewController())
for (index,url) in enumerate(urls){
var reportVC : ReportViewController = mainStoryboard.instantiateViewControllerWithIdentifier("ReportVC") as ReportViewController
//reportVC.title = ""
let request = NSURLRequest(URL: url)
reportVC.reportWebView.loadRequest(request)
reportControllers[index] = reportVC
if reportControllers.count == urls.count{
callback(controllers: reportControllers)
}
}
}
}
任何指导将不胜感激。谢谢。
最佳答案
很可能 ReportViewController
的 reportVC
实例中的 reportWebView
未绑定(bind)(绑定(bind)到 nil
)。 Xcode IB 将 IBOutlets 声明为“隐式展开的可选值”——您需要为它们提供初始值。如果不这样做,第一次访问该属性时将导致运行时异常。
通过确保 reportWebView
绑定(bind)到 UIWebView
来修复错误 - 无论是在您的 Storyboard还是您的代码中。
关于ios - 执行 webView.loadRequest(request) 时出现 "unexpectedly found nil ..."错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28163994/