将Firebase数据从UITableView单元复制到单独的视图控制器

时间:2017-02-11 18:08:35

标签: xcode uitableview firebase swift3 firebase-realtime-database

我有一个类似于Instagram等社交媒体应用的应用。在单元格中,我有一个UIImageView和一个通向单独视图控制器的按钮。我在单独的视图控制器中需要的是从UILabel中的数据库加载的文本,该文本将根据被点击的单元格而改变。什么是最好和最简单的方法呢?

我的一条评论的更多信息: 在Firebase中,我有一个名为' posts'我保留所有帖子。这些帖子显示在主页上的单元格中,这些单元格还包含“详细信息”。按钮,它有一个segue到单独的视图控制器。我想要做的是在单独的视图控制器中调用某个帖子,然后在UI标签中显示该帖子的数据。图片:m.imgur.com/c7fEKks?r.png

1 个答案:

答案 0 :(得分:0)

有很多关于如何通过segue传递数据的教程,所以这是一个快速而简短的片段。

假设以下

带有显示用户名的tableView的MasterViewController。    tableView有一个用UserClass对象填充的数组dataSource。这些对象是从Firebase填充的。

UserClass {
   userName = ""
   shoeSize = ""
}

带有文本标签的DetailViewController。

一个名为'showDetail'的类型显示详细信息,它与MasterViewController上的tableView上的行绑定到DetailViewController

当tapView中的一行被触发时,此segue'激活'并将在detailViewController上显示用户的鞋子尺寸

这是在点击masterViewController tableView中的一行时调用的代码(在MasterViewController中)。

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
  if segue.identifier == "showDetail" {           
    if let indexPath = self.tableView.indexPathForSelectedRow {
      let aUser = usersArray[indexPath.row]
      let shoeSize = aUser.shoeSize
      let controller = (segue.destination as! 
               UINavigationController).topViewController as! DetailViewController
      controller.shoeSize = shoeSize
     }
  }
}
在填充变量时,在detailViewController中

,显示它

@IBOutlet weak var shoeSizeLabel: UILabel!

func configureView() {
    if let shoe = self.shoeSize {
        if let label = self.shoeSizeLabel {
            label.text = shoe
        }
    }
}

override func viewDidLoad() {
    super.viewDidLoad()
    self.configureView()
}

var shoeSize: String? {
    didSet {
        self.configureView()
    }
}