我有一个类似于Instagram等社交媒体应用的应用。在单元格中,我有一个UIImageView和一个通向单独视图控制器的按钮。我在单独的视图控制器中需要的是从UILabel中的数据库加载的文本,该文本将根据被点击的单元格而改变。什么是最好和最简单的方法呢?
我的一条评论的更多信息: 在Firebase中,我有一个名为' posts'我保留所有帖子。这些帖子显示在主页上的单元格中,这些单元格还包含“详细信息”。按钮,它有一个segue到单独的视图控制器。我想要做的是在单独的视图控制器中调用某个帖子,然后在UI标签中显示该帖子的数据。图片:m.imgur.com/c7fEKks?r.png
答案 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()
}
}