在 swift 的 UIWebView 中加载 URL 时出现致命错误
fatal error on loading URL in UIWebView in swift
我正在使用 UISplitViewController 在 All Visible 模式下显示主页面和详细页面。仅纵向。我在 masterVC 中使用可扩展的 table 视图。所以我在部分中添加了一个视图。如果我点击那个视图,URL 应该反映在 webView 中,详细说明 VC。但是,对于我的代码,我收到一个错误。我没有为此使用任何导航控制器。我直接将 splitViewController 连接到主视图控制器和详细视图控制器。我在下面描述。请帮助我。
详细视图控制器
func webViewLoader()
{
println("Came Inside Web View")
let url = "http://makeapppie.com/2014/10/28/swift-swift-using-uiwebviews-in-swift/"
let requestURL = NSURL(string:url)
let request = NSURLRequest(URL: requestURL!)
webView.loadRequest(request) //FATAL ERROR WHILE UNWRAPPING
}
在主视图控制器中
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView(frame: CGRectMake(0, 0, sideTableView.frame.size.width, 49)) //ADDING VIEW TO SECTION - FOR EXPANDABLE TABLEVIEW
var layerLine = CALayer()
layerLine.frame = CGRect(x: 0, y: headerView.frame.size.height, width: headerView.frame.size.width, height: 1)
layerLine.backgroundColor = UIColor(red: 220/255, green: 220/255, blue: 220/255, alpha: 1.0).CGColor
headerView.backgroundColor = UIColor(red: 242/255, green: 242/255, blue: 242/255, alpha: 1.0)
headerView.tag = section
headerView.layer.addSublayer(layerLine) //ADDING BOTTOM BORDER TO CELL
let headerString = UILabel(frame: CGRect(x: 10, y: 10, width: sideTableView.frame.size.width-10, height: 30)) as UILabel
headerString.text = sideTblData.objectAtIndex(section) as! NSString as String
headerString.font = headerString.font.fontWithSize(15)
headerView .addSubview(headerString)
let headerTapped = UITapGestureRecognizer (target: self, action: "sectionHeaderTapped:")
headerView .addGestureRecognizer(headerTapped)
return headerView
}
在HeaderTapped部分
func sectionHeaderTapped(recognizer: UITapGestureRecognizer) {
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc : DetailVC = storyboard.instantiateViewControllerWithIdentifier("web-link") as! atlDetailVC
vc.webViewLoader()
}
在viewDidLoad中
let url = "http://makeapppie.com/2014/10/28/swift-swift-using-uiwebviews-in-swift/"
let requestURL = NSURL(string:url)
let request = NSURLRequest(URL: requestURL!)
webView.loadRequest(request) //It is working. But, in method call, why I am getting fatal error??
我已经创建了一个类似的应用程序,但我的代码没有问题。这是我的代码:
class MasterViewController: UITableViewController{
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell
cell.textLabel?.text = "\(indexPath.row)"
return cell
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let dvc = self.splitViewController?.viewControllers.last as! DetailViewController
dvc.webViewLoader()
}
}
class DetailViewController: UIViewController {
@IBOutlet weak var WebView: UIWebView!
func webViewLoader() {
println("Came Inside Web View")
let url = "http://www.google.com"
let requestURL = NSURL(string:url)
let request = NSURLRequest(URL: requestURL!)
WebView.loadRequest(request) //FATAL ERROR WHILE UNWRAPPING
}
}
更新 1
我已经上传 Project
我正在使用 UISplitViewController 在 All Visible 模式下显示主页面和详细页面。仅纵向。我在 masterVC 中使用可扩展的 table 视图。所以我在部分中添加了一个视图。如果我点击那个视图,URL 应该反映在 webView 中,详细说明 VC。但是,对于我的代码,我收到一个错误。我没有为此使用任何导航控制器。我直接将 splitViewController 连接到主视图控制器和详细视图控制器。我在下面描述。请帮助我。
详细视图控制器
func webViewLoader()
{
println("Came Inside Web View")
let url = "http://makeapppie.com/2014/10/28/swift-swift-using-uiwebviews-in-swift/"
let requestURL = NSURL(string:url)
let request = NSURLRequest(URL: requestURL!)
webView.loadRequest(request) //FATAL ERROR WHILE UNWRAPPING
}
在主视图控制器中
func tableView(tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
let headerView = UIView(frame: CGRectMake(0, 0, sideTableView.frame.size.width, 49)) //ADDING VIEW TO SECTION - FOR EXPANDABLE TABLEVIEW
var layerLine = CALayer()
layerLine.frame = CGRect(x: 0, y: headerView.frame.size.height, width: headerView.frame.size.width, height: 1)
layerLine.backgroundColor = UIColor(red: 220/255, green: 220/255, blue: 220/255, alpha: 1.0).CGColor
headerView.backgroundColor = UIColor(red: 242/255, green: 242/255, blue: 242/255, alpha: 1.0)
headerView.tag = section
headerView.layer.addSublayer(layerLine) //ADDING BOTTOM BORDER TO CELL
let headerString = UILabel(frame: CGRect(x: 10, y: 10, width: sideTableView.frame.size.width-10, height: 30)) as UILabel
headerString.text = sideTblData.objectAtIndex(section) as! NSString as String
headerString.font = headerString.font.fontWithSize(15)
headerView .addSubview(headerString)
let headerTapped = UITapGestureRecognizer (target: self, action: "sectionHeaderTapped:")
headerView .addGestureRecognizer(headerTapped)
return headerView
}
在HeaderTapped部分
func sectionHeaderTapped(recognizer: UITapGestureRecognizer) {
let storyboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let vc : DetailVC = storyboard.instantiateViewControllerWithIdentifier("web-link") as! atlDetailVC
vc.webViewLoader()
}
在viewDidLoad中
let url = "http://makeapppie.com/2014/10/28/swift-swift-using-uiwebviews-in-swift/"
let requestURL = NSURL(string:url)
let request = NSURLRequest(URL: requestURL!)
webView.loadRequest(request) //It is working. But, in method call, why I am getting fatal error??
我已经创建了一个类似的应用程序,但我的代码没有问题。这是我的代码:
class MasterViewController: UITableViewController{
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return 5
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell") as! UITableViewCell
cell.textLabel?.text = "\(indexPath.row)"
return cell
}
override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
let dvc = self.splitViewController?.viewControllers.last as! DetailViewController
dvc.webViewLoader()
}
}
class DetailViewController: UIViewController {
@IBOutlet weak var WebView: UIWebView!
func webViewLoader() {
println("Came Inside Web View")
let url = "http://www.google.com"
let requestURL = NSURL(string:url)
let request = NSURLRequest(URL: requestURL!)
WebView.loadRequest(request) //FATAL ERROR WHILE UNWRAPPING
}
}
更新 1
我已经上传 Project