Swift:触发 TableViewCell 导致另一个 ViewController 中的 UIWebView 中的 link

Swift: Triggering TableViewCell to lead to a link in a UIWebView in another ViewController

当我点击 tableViewCell 时,我希望 link(特定于该单元格的 indexPath.row)在带有 webView 的新 viewController 中打开。

示例:我点击 tableView 中的第 3 个单元格,然后 www.apple.com 打开一个新的 viewController。

我正在尝试使用 didSelectRowAtIndexPath 来做到这一点,但我无法弄清楚如何将代码放在一起,以便来自 linksArray 的代码(我拥有所有 links stored) 当我点击 tableViewCell

时一起工作

我正在查询来自 Parse.com 的这些 link。这是我的数组:

var linksArray = [NSURL]()

我创建了一个名为 LinkViewViewController 的新 Class,其中我仅将 webView 作为 @IBOutlet weak var webView: UIWebView! 连接,没有其他任何内容。我取出了viewDidLoad方法,这样我就可以从FeedTableViewControllerclass有单元格的地方控制LinkViewViewController了。

下面是我的代码

 override func tableView(tableView: UITableView,  didSelectRowAtIndexPath indexPath: NSIndexPath) {

    let myWebView = tableView.dequeueReusableCellWithIdentifier("cell",    forIndexPath: indexPath) as! LinkViewViewController

    var url = NSURL(string:"\(links[indexPath.row])")

    var request = NSURLRequest(URL: url!)

    myWebView.webView.loadRequest(links[indexPath.row] as! NSURLRequest)

}

更新

我也在尝试这样做,这样可能更合乎逻辑。我正在访问存储在 ProductInfo class 中的 Parse 中的 links。 productName 数组表示单元格的组织顺序,以便在点击产品名称时可以访问 link。

   override func tableView(tableView: UITableView,  didSelectRowAtIndexPath indexPath: NSIndexPath) {

    let myWebView = tableView.dequeueReusableCellWithIdentifier("cell",    forIndexPath: indexPath) as! LinkViewViewController
  //Assuming that myWebView is the right method/way to go about it. 

    var link = PFObject(className: "ProductInfo")

    link["pLink"] = productName[indexPath.row]


       /* Code missing: I'm accessing where the link is (the
        indexPath.row) associated with the productName. 
        I don't know how to go about this now... How do i access the 
        webView in the other viewController where the corresponding 
        link appears?

        */
}

我也尝试过创建一个从单元格到 webView 的 segue,但这也没有用...

如何设置 didSelectRowAtIndexPath 以便触发 link 以显示在新视图中?

思想:NSTransportSecurity中的info.plist也有问题?

任何帮助都意义重大。

谢谢。

您不应该使用 dequeueReusableCellWithIdentifier 来创建您的下一个视图控制器。您应该使用故事板的 instantiateViewControllerWithIdentifier 创建实例:在故事板

中为 viewController 设置 "Storyboard ID"

例如,如果将其设置为 "WebViewController",则可以使用以下命令创建实例:

let myWebView = self.storyboard!.instantiateViewControllerWithIdentifier("WebViewController") as! LinkViewViewController

我的建议是给 LinkViewViewController 一个单独的 URL 属性,

var url : NSURL?

并在创建实例后传递 URL:

myWebView.url = url

然后呈现新的VC:

self.presentViewController(myWebView, animated: true, completion: nil)

在LinkViewViewController的viewDidLoad中,将URL加载到webView中:

let URLRequest = NSURLRequest(self.url)
self.webView.loadRequest(URLRequest)

(未经测试输入;请原谅任何 typos/errors 与可选等)。

作为最后的说明,此方法使用 didSelectRow 方法创建视图控制器实例并传递 URL。另一种选择是通过按住 ctrl 键从原型单元格拖动到视图控制器来使用 segue。然后你需要在 prepareForSegue 方法中实现类似的代码来设置 url.