gpt4 book ai didi

ios - Swift:触发 TableViewCell 以导致另一个 ViewController 中的 UIWebView 中的链接

转载 作者:行者123 更新时间:2023-11-28 06:57:05 25 4
gpt4 key购买 nike

当我点击 tableViewCell 时,我想要一个链接(特定于该单元格的 indexPath.row)以在带有 webView 的新 viewController 中打开。

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

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

时一起工作

我正在从 Parse.com 查询这些链接。这是我的数组:

var linksArray = [NSURL]()

我创建了一个名为 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)

}

更新

我也在尝试这样做,这可能更合乎逻辑。我正在访问存储在 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?

*/
}

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

如何设置 didSelectRowAtIndexPath 以便触发链接以显示在新 View 中?

想法:info.plist 中的 NSTransportSecurity 也是一个问题?

任何帮助都意义重大。

谢谢。

最佳答案

您不应该使用 dequeueReusableCellWithIdentifier 来创建您的下一个 View Controller 。您应该使用 Storyboard 的 instantiateViewControllerWithIdentifier 来创建实例:在您的 Storyboard 中为 viewController 设置“ Storyboard ID”

Storyboard image

例如,如果将其设置为“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)

(未经测试输入;请原谅任何拼写错误/选项等错误)。

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

关于ios - Swift:触发 TableViewCell 以导致另一个 ViewController 中的 UIWebView 中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33201437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com