swift - 在 Swift 4 中传递数据后的空白标签?
问题描述
我目前正在尝试将数据从我的表视图控制器传递到第二个视图控制器,但我的标签和图像在第二个视图控制器中显示为空白。
这是我的主要事件视图控制器:
class EventsTableViewController: PFQueryTableViewController {
override func queryForTable() -> PFQuery<PFObject> {
let query = PFQuery(className: "Events")
//query.order(byAscending: "location")
query.order(byAscending: "date")
return query
}
override func viewDidLoad() {
super.viewDidLoad()
self.title = "Upcoming Events"
// Do any additional setup after loading the view.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "MasterToDetail" {
let detailVC = segue.destination as! DetailViewController
detailVC.myEventCell = sender as? EventCell
}
}
}
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath, object: PFObject?) -> PFTableViewCell? {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! EventCell
cell.dateLabel.text = object?.object(forKey: "date") as? String
cell.locationLabel.text = object?.object(forKey: "location") as? String
cell.nameLabel.text = object?.object(forKey: "name") as? String
let imageFile = object?.object(forKey: "image") as? PFFile
cell.eventImage.image = UIImage(named: "download")
cell.eventImage.file = imageFile
cell.eventImage.loadInBackground()
return cell
}
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
performSegue(withIdentifier: "MasterToDetail", sender: EventCell())
}
@IBAction func reloadTable(_ sender: Any) {
self.loadObjects()
}
@IBAction func onSignOutTapped(_ sender: Any) {
let firebaseAuth = Auth.auth()
do {
try firebaseAuth.signOut()
performSegue(withIdentifier: "signOutSegue", sender: nil)
} catch {
print (error)
}
}
}
和我的第二个视图控制器:
class DetailViewController: UIViewController {
@IBOutlet weak var detailImageView: UIImageView!
@IBOutlet weak var detailNameLabel: UILabel!
@IBOutlet weak var detailDescriptionLabel: UILabel!
@IBOutlet weak var detailLocationLabel: UILabel!
var myEventCell: EventCell?
override func viewDidLoad() {
super.viewDidLoad()
setUI()
}
func setUI () {
detailNameLabel.text = myEventCell?.nameLabel.text
detailImageView.image = myEventCell?.eventImage.image
detailLocationLabel.text = myEventCell?.locationLabel.text
}
}
解决方案
当您在这里发送一个空单元格时
performSegue(withIdentifier: "MasterToDetail", sender: EventCell())
你需要
let cell = tableView.cellForRow(at:indexPath)
performSegue(withIdentifier: "MasterToDetail", sender:cell)
推荐阅读
- r - R根据两个不同的参数创建多个列
- php - Stripe - 结帐不支持没有名称的 SKUS
- streamsets - Streamsets 在尝试解析有效 JSON 时出现此错误
- javascript - 仅在没有登录表单的页面上加载 Hubspot 跟踪代码
- jquery - 显示具有动态内容的新面板的简单方法
- php - 在 WooCommerce 电子邮件通知中显示特定产品属性
- arrays - 如何在angular6中合并数组值相同的id对象?
- python - teardown_appcontext 是否忽略 HTTPExceptions?
- c - 寄存器的结构或矩阵?
- c++ - pybind11中受保护的虚拟析构函数