我正在使用 UISplitViewController 以所有可见模式显示主页面和详细信息页面。仅限纵向。我在 masterVC 中使用可扩展 TableView 。所以我在部分添加了一个 View 。如果我点击该 View ,URL 应该反射(reflect)在 webView 中,具体为 VC。但是,对于我的代码,我收到一个错误。我没有为此使用任何导航 Controller 。我直接将 splitViewController 连接到主视图 Controller 和详细 View Controller 。我在下面描述了。请帮助我。
详细 View Controller
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
}
在主视图 Controller 中
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
}
在sectionHeaderTapped
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
关于swift - 在 swift 中加载 UIWebView 中的 URL 时发生 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31283588/