在swift 4中将数据解析为vc总是为零

时间:2018-06-25 11:07:54

标签: swift4

我想将一个VC中的数据解析到另一个,以使用给定的数据作为URL字符串打开Web视图。数据来自表格视图。在表格视图中,我有一个带有用于打开segue的功能的按钮。

 override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath, object: PFObject?) -> PFArchivTableViewCell? {


    let cell = tableView.dequeueReusableCell(withIdentifier: "PFCell") as! PFArchivTableViewCell?

    cell?.button.addTarget(self, action: #selector(someAction), for: UIControlEvents.touchUpInside)
    cell?.button.accessibilityHint = object?.object(forKey: "calameoURL") as? String} return cell

然后我使用按钮的功能:

 @objc func someAction(sender: UIButton) {
    let PFurlString = sender.accessibilityHint!
    print ("URL in the cell: \(PFurlString)")
    self.performSegue(withIdentifier: "showPFArchivUrl", sender: AnyObject.self)

}

并准备进行搜索:

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showPFArchivUrl" {
    let destination = segue.destination as? ArchivWebViewController
    print ("button pressed")
    destination?.dataFromFirst = "Hello World"
    destination?.PFurlString? = PFurlString!

    }

}

问题是:在 ArchivWebViewController “ Hello World”中传递的字符串可用,但是给定的变量“ PFurlString”始终为nil。有谁知道在另一个ViewController上获取此变量?

非常感谢您的回答。我更改了以下几行:

let cell = tableView.dequeueReusableCell(withIdentifier: "PFCell") as! PFArchivTableViewCell
cell.button.addTarget(self, action: #selector(someAction), for: UIControlEvents.touchUpInside)
    cell.button.accessibilityHint = object?.object(forKey: "calameoURL") as? String
在按钮的功能中,

在打印语句中获得 accessibilityHint 的值。

但在 prepare(用于segue:UIStoryboardSegue,发件人:任意?)中,该值始终为

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "showPFArchivUrl" {
    let destination = segue.destination as! ArchivWebViewController
print ("URL: \(PFurlString)")
        destination.PFurlString = PFurlString

    }

2 个答案:

答案 0 :(得分:0)

您可以创建一个带有变量的类,在其中保存URL数据。展示了新的视图控制器之后,您可以在其中调用该类并获取变量的值,并获得url

答案 1 :(得分:0)

您正在@objc func someAction(sender:UIButton)中创建本地PFurlString。 IDK,您可以在其中获取PFurlString,但尝试替换

    let PFurlString = sender.accessibilityHint!

使用

    PFurlString = sender.accessibilityHint!

确保您具有类似 var PFurlString:String?

的类变量。