UIWebView的导航栏

时间:2015-12-01 03:30:53

标签: ios swift uiwebview

我是iOS新手。尝试为UIWebView实现导航栏。

我的TableView在用户点击任意行时调用webview。我根据点击的索引用户加载不同的本地HTML文件。我的webview正确加载但问题是,我想在那里保留一个导航栏和< back按钮,以便用户可以点击它返回到tableview。

这是我的ProductTableViewController

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cellIdentifier = "ProductTableViewCell"


    let cell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier, forIndexPath: indexPath) as! ProductTableViewCell

    let product = products[indexPath.row]

    cell.name.text = product.name
    cell.generic.text = product.generic

    return cell
}


override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
    if let resultController = storyboard!.instantiateViewControllerWithIdentifier("webView") as? WebViewController {
        presentViewController(resultController, animated: true, completion: nil)
    }

    //print(indexPath.row)
    clickedOn = indexPath.row
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let svc = segue.destinationViewController as! WebViewController;
    //if clickedOn == 3{
        svc.fileName = "Ace-VetBolus"
    //}
}

我的WebViewController

override func viewDidLoad() {
    //print("got: "+self.fileName)

    let url = NSBundle.mainBundle().URLForResource(self.fileName, withExtension:"html")
    let request = NSURLRequest(URL: url!)

    web1.loadRequest(request)
}

请帮我写一下Swift代码。

2 个答案:

答案 0 :(得分:0)

如果您在WebViewController上展示ProductTableViewController,并希望在导航栏上显示条形按钮,我建议您在WebViewController中将UINavigationController嵌入到IB中。

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    let navc = segue.destinationViewController as! UINavigationController;
    let svc = navc.topViewController as! WebViewController;
    //if clickedOn == 3{
        svc.fileName = "Ace-VetBolus"
    //}
}

prepareForSegue方法中的微小变化。

栏上的后退按钮必须手动添加。

答案 1 :(得分:0)

didSelectRowAtIndexPath替换为以下版本,它适用于我。

override func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
        if let resultController = storyboard!.instantiateViewControllerWithIdentifier("webView") as? WebViewController {
            let navController : UINavigationController = UINavigationController (rootViewController: resultController)
            self.navigationController?.presentViewController(navController, animated: true, completion: nil)
        }

        //print(indexPath.row)
        clickedOn = indexPath.row
    }