我有一类User,其中包含大量用户数据。就像一个联系人应用程序,我想当有人点击联系人时,它会加载一张联系人卡片。通常我使用prepareForSegue和storyboard segue来传递String,Int,Array等的值,但我似乎无法弄清楚如何发送User类型的值。在发送方面,我已正确设置但我无法弄清楚如何设置接收视图。我想发送整个东西而不是使用点语法并单独抓取每个元素的原因是因为(像联系人应用程序)我希望用户能够向联系人卡添加字段而我不希望输入我需要传递的所有数据,除非我必须这样做。
用户类:
class User {
var firstName = ""
var lastName = ""
var email = ""
var birthday = ""
var team = ""
var schedule = ""
var service = ""
var position = ""
var phoneNumber = ""
var dateStarted = ""
var profileImgURL = ""
var notes = ""
init (firstName:String, lastName:String, email:String, birthday:String, team:String, schedule:String, service:String, position:String, phoneNumber:String, dateStarted:String, profileImgURL:String, notes:String) {
self.firstName = firstName
self.lastName = lastName
self.email = email
self.birthday = birthday
self.team = team
self.schedule = schedule
self.service = service
self.position = position
self.phoneNumber = phoneNumber
self.dateStarted = dateStarted
self.profileImgURL = profileImgURL
self.notes = notes
}
发信人:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SeeContactCardSegue" {
if let destVC = segue.destinationViewController as? ContactCardTVC {
if let indexPath = tableView.indexPathForSelectedRow {
let user = users[indexPath.row]
destVC.user = user
}
}
}
}
接收器:
var user:User = ???
我收到一条错误消息,说用户需要初始化,我在大多数情况下会得到这些错误,但我不知道如何初始化它。我错过了什么吗?
答案 0 :(得分:0)
我有一种感觉,如果您通过模态segue显示不同的视图,我遇到了同样的问题 - destinationViewController是UINavigationController而不是您的控制器。首先在调试器中验证您实际进入if let destVC = segue.destinationViewController as? ContactCardTVC
块并且segue.destinationViewController
确实是ContactCardTVC
如果我的假设是正确的,你的destinationViewController是一个UINavigationController,你的代码应该如下所示:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "SeeContactCardSegue" {
let nav = segue.destinationViewController as! UINavigationController
let cardContactVC = nav.topViewController as! ContactCardTVC
if let indexPath = tableView.indexPathForSelectedRow {
let user = users[indexPath.row]
cardContactVC.user = user
}
}
}
答案 1 :(得分:0)
强行打开它。它应该工作正常。
var user:User!