How to use navigationController to show up a WebView when I choose one cell from the tableView?

回眸只為那壹抹淺笑 提交于 2019-12-11 09:58:36

问题


When we choose one cell from the tableView, we use the didSelectRowAtIndexPath method to implement the specific operation.

Then how to jump to another view like webView via the navigationController?

I want to use the prepareForSegue to handle this issue like below, and I just know how to pass data from one viewController to another viewController.

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!){
    var channelC:ChannelController=segue.destinationViewController as ChannelController

    channelC.delegate = self
    //将channelData传递给ChannelController中去。
    channelC.channelData=self.channelData
}

I don't know how to code in the didSelectRowAtIndexPath method when I want to show up another view like WebView?

I just use the storyboard to handle viewController switch thing. Thanks


回答1:


Here I create a simple example for you :

import UIKit

class ViewController: UIViewController,UITableViewDataSource, UITableViewDelegate {

var arr: [String] = ["google", "yahoo", "Swift"]
var index : Int = Int()
override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{

    return arr.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{

    var identifier : NSString = "Cell"

    var cell = tableView.dequeueReusableCellWithIdentifier(identifier) as? UITableViewCell

    if !(cell != nil) {
        cell = UITableViewCell(style: UITableViewCellStyle.Value1, reuseIdentifier: identifier)
    }
    cell?.textLabel.text = self.arr[indexPath.row]

    return cell!
}

func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath!) {
    tableView.deselectRowAtIndexPath(indexPath, animated: true)

    //store your clicked row into index
    index = indexPath.row

    // get to the next screen
    self.performSegueWithIdentifier("goNext", sender: self)
}

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {

    if (segue.identifier == "goNext") {

        var webViewController = segue.destinationViewController as googleViewController

        //switch case for row which you have clicked
        switch index{

        case 0:

            webViewController.url = "https://www.google.co.in/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8"
        case 1:

            webViewController.url = "https://in.yahoo.com/"
        case 2:

            webViewController.url = "https://developer.apple.com/library/prerelease/mac/documentation/Swift/Conceptual/Swift_Programming_Language/TheBasics.html#//apple_ref/doc/uid/TP40014097-CH5-XID_456"
        default:
            println("nothing")
            }
        }

    }
}

here is code for your googleViewController.swift

    @IBOutlet weak var webView: UIWebView!

var url : String = String()

override func viewDidLoad() {
    super.viewDidLoad()

    let requestURL = NSURL(string:url)
    let request = NSURLRequest(URL: requestURL!)
    webView.loadRequest(request)

}

May be this will help you.



来源:https://stackoverflow.com/questions/27539712/how-to-use-navigationcontroller-to-show-up-a-webview-when-i-choose-one-cell-from

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!