Swift:触发TableViewCell导致另一个ViewController中的UIWebView中的链接
当我点击一个tableViewCell
我想要一个链接(这是特定于该单元格的indexPath.row
)打开一个新的viewController与一个webView。
例如:我点击tableView
的第三个单元格,www.apple.com打开一个新的viewController。
我试图用didSelectRowAtIndexPath
做到这一点,但我不知道如何把代码放在一起,以便linksArray
(其中我有所有链接存储)的代码一起工作,当我点击tableViewCell
我从Parse.com查询这些链接。 这是我的数组:
var linksArray = [NSURL](
)
我创build了一个名为LinkViewViewController
的新类,我只把webView连接成一个@IBOutlet weak var webView: UIWebView!
没有别的。 我拿出viewDidLoad
方法,以便可以从具有单元格的FeedTableViewController
类控制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) }
UPDATE
我也试图这样做,这也许更合乎逻辑。 我正在访问存储在ProductInfo类中的Parse中的链接。 productName
数组代表单元按什么顺序排列,以便在产品名称上点击时可以访问链接。
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? */ }
我也试过从单元格创build一个segue到webView,但是也没有工作…
我如何设置didSelectRowAtIndexPath
以便触发一个链接出现在一个新的视图?
思想: info.plist
NSTransportSecurity
也是一个问题?
任何帮助意味着很多。
谢谢。
你不应该使用dequeueReusableCellWithIdentifier
来创build你的下一个视图控制器。 你应该使用storyboard的instantiateViewControllerWithIdentifier
来创build实例:在storyboard中为viewController设置“Storyboard ID”
例如,如果将其设置为“WebViewController”,则可以使用以下命令创build实例:
let myWebView = self.storyboard!.instantiateViewControllerWithIdentifier("WebViewController") as! LinkViewViewController
我的build议是给LinkViewViewController
自己的URL属性,
var url : NSURL?
并在创build实例后传递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)
(打字时没有testing;请原谅任何拼写错误或选项等错误)。
最后要说明的是,此方法使用didSelectRow
方法创build视图控制器实例并传递URL。 另一个select是通过从原型单元格拖动到视图控制器来使用segue。 然后你需要在prepareForSegue
方法中实现类似的代码来设置url。