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
}
答案 0 :(得分:0)
您可以创建一个带有变量的类,在其中保存URL数据。展示了新的视图控制器之后,您可以在其中调用该类并获取变量的值,并获得url
答案 1 :(得分:0)
您正在@objc func someAction(sender:UIButton)中创建本地PFurlString。 IDK,您可以在其中获取PFurlString,但尝试替换
let PFurlString = sender.accessibilityHint!
使用
PFurlString = sender.accessibilityHint!
确保您具有类似 var PFurlString:String?
的类变量。