swift - 在 swift 中加载 UIWebView 中的 URL 时发生 fatal error

标签 swift uiwebview uistoryboard

我正在使用 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/

相关文章:

ios - 加载 HTML 字符串时 UIWebView 保持空白

iOS:将对象传递给 viewController 错误:无法识别的选择器已发送至实例

objective-c - 在静态单元格上使用 UIDatePicker

ios - 尝试切换到不同 Storyboard 中的不同 View Controller 时无响应

ios - 如何以编程方式滚动我的整个 View ,包括图像

swift - “非持久”S4TF 安装

ios - 在 UITableView Cell 中实现 UIWebView

ios - 快速自定义标注 View

ios - 获取键盘高度在 IOS 11 beta 上不起作用

webview - Flutter:Web View 应用程序仅在应用程序中运行特定网站,其他网站在手机本地浏览器中打开