【问题标题】:How do I use prepare segue with tableview cell?如何在 tableview 单元格中使用 prepare segue?
【发布时间】:2017-06-22 18:21:38
【问题描述】:

如何获取文本,作者...并将其传输到另一个视图控制器?我不明白如何检索数据并将其放入 segue 以及如何调用 segue。我制作了另一个视图控制器并连接了标签及其名为 titleString

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 prepare(for segue: UIStoryboardSegue, sender: Any?) {

    var thePostView = segue.destination as! ArticleViewController
    thePostView.titleString = title!
}




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!





}

}

【问题讨论】:

    标签: ios swift uitableview segue tableviewcell


    【解决方案1】:

    根据您的代码,您应该可以使用indexPathForSelectedRow

    thePostView.date = posts[tableView.indexPathForSelectedRow.row]

    【讨论】:

    • 我把这个放在哪里?
    • override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    【解决方案2】:

    您需要在prepare for segue方法中传输数据

    override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    
        var thePostView = segue.destination as! ArticleViewController
        thePostView.titleString = title!
    
        // SET ANY OTHER properties of thePostView here
        // BEWARE THAT OUTLET PROPERTIES ARE NOT HOOKED UP YET
        // SO MAKE OTHER PROPERTIES AND COPY TO OUTLETS IN viewDidLoad
    
    }
    

    我放评论的地方你可以设置thePostView的属性。此时,该视图控制器中的任何@IBOutlet 属性都将是nil,因此不要尝试设置标签文本之类的内容。而是添加一个常规的String 属性来设置,然后将其复制到viewDidLoad() 中的标签文本中

    【讨论】:

      猜你喜欢
      • 2018-12-19
      • 1970-01-01
      • 2020-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      • 1970-01-01
      • 2020-12-20
      相关资源
      最近更新 更多