2017-06-22 56 views
1

我想将标题作为titleText放入作为标签的DestVC中。我如何将它放在segue函数中?如何将文本放入segue函数以传递给下一个控制器?

import UIKit 
import Firebase 
import FirebaseDatabase 
import SDWebImage 


struct postStruct { 
    let title : String! 
    let author : String! 
    let date : String! 
    let article : String! 
    let downloadURL : String! 

} 

class ZeroHomeViewController: UITableViewController { 




var posts = [postStruct]() 
var downloadURL : String = "" 






override func viewDidLoad() { 
    super.viewDidLoad() 


    let ref = Database.database().reference().child("Posts") 

    ref.observeSingleEvent(of: .value, with: { snapshot in 

     print(snapshot.childrenCount) 

     for rest in snapshot.children.allObjects as! [DataSnapshot] { 

      guard let value = rest.value as? Dictionary<String,Any> else { continue } 

      guard let title = value["Title"] as? String else { continue } 
      guard let downloadURL = value["Download URL"] as? String else { continue } 
      guard let author = value["Author"] as? String else { continue } 
      guard let date = value["Date"] as? String else { continue } 
      guard let article = value["Article"] as? String else { continue } 


      let post = postStruct(title: title, author: author, date: date, article: article, downloadURL: downloadURL) 

      self.posts.append(post) 


     } 

     self.posts = self.posts.reversed(); self.tableView.reloadData() 

    }) 


} 




override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { 
    return posts.count 
} 

override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { 
    let cell = tableView.dequeueReusableCell(withIdentifier: "cell") 

    let label1 = cell?.viewWithTag(1) as! UILabel 
    label1.text = posts[indexPath.row].title 


    let imageView = cell?.viewWithTag(2) as! UIImageView 
    let post = self.posts[indexPath.row]; 
    imageView.sd_setImage(with: URL(string: post.downloadURL), placeholderImage: UIImage(named: "placeholder")) 

return cell! 

} 


override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "detail" { 
     if let indexPath = tableView.indexPathForSelectedRow { 
      let destVC = segue.destination as! ArticleViewController 
      destVC.titleText = value["Title"] as? String 

     } 

    } 
} 

}

+0

'destVC.titleText = value [“Title”] as?字符串? – Paulw11

+0

它不工作。说成员的价值模糊引用(forKey :)' – Riccardo

+0

什么是'价值'?您尚未显示您的代码中的哪个/哪些内容 – Paulw11

回答

2

您只需从你的posts阵列访问相关postStruct,然后拿到冠军。您已经拥有所选行的索引路径; .row属性将成为您所需结构的posts数组中的索引。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if segue.identifier == "detail" { 
     if let indexPath = tableView.indexPathForSelectedRow { 
      let destVC = segue.destination as! ArticleViewController 
      destVC.titleText = posts[indexPath.row].title 

     } 

    } 
} 
+0

工作!谢谢! – Riccardo

相关问题