我在控制器之间传递数据时遇到问题。在需求中,我使用了选项卡栏,有"搜索人员视图"one_answers"个人资料视图"的根。当我单击配置文件视图时,数据来自我的NSUserDefaults
数据,但如果我从搜索人员视图中单击人员单元格,则配置文件视图应显示人员单元格中的数据。我不知道该如何处理那件案子。有没有可能识别在配置文件视图中的分段标识符。请帮忙,更喜欢swift代码
更新:
这是我关于"搜索人员视图"的代码:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "ShowAlumniAngkatan" {
if let destination = segue.destinationViewController as? DetailProfile{
let indexPath = ListAlumniTable.indexPathForSelectedRow
let data = SearchResult[indexPath!.row]
}
}
}
下面是"剖面图"代码:
class ProfileDetailsViewController: UIViewController {
@IBOutlet weak var BackgroundImage: UIImageView!
@IBOutlet weak var ProfileTable: UITableView!
@IBOutlet weak var ProfilePictureImage: UIImageView!
var Profiles:DetailProfile!
var contacts:[Contact] = [Contact]()
var work:[Work] = [Work]()
var advise:String!
var SeeMoreEnbable:Bool!
override func viewDidLoad() {
super.viewDidLoad()
InitializationView()
SeeMoreEnbable = false
getData()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
}
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
self.view.endEditing(true)
}
// MARK - Init View
func InitializationView(){
blurImage()
circleImage()
}
func getData(){
let defaults = NSUserDefaults.standardUserDefaults().objectForKey("UserDetail") as! [NSData]
self.advise = NSKeyedUnarchiver.unarchiveObjectWithData(defaults[3] as NSData) as! String
let temp1 = NSKeyedUnarchiver.unarchiveObjectWithData(defaults[2] as NSData) as! [NSArray]
for data in temp1{
let jabatan = NSKeyedUnarchiver.unarchiveObjectWithData(data[0] as! NSData) as! String
let perusahaan = NSKeyedUnarchiver.unarchiveObjectWithData(data[1] as! NSData) as! String
let tahunkerja = NSKeyedUnarchiver.unarchiveObjectWithData(data[2] as! NSData) as! String
self.work.append(Work(Jabatan: jabatan, Perusahaan: perusahaan, TahunKerja: tahunkerja))
print(work[0].Jabatan)
print(work.count)
}
let temp2 = NSKeyedUnarchiver.unarchiveObjectWithData(defaults[1] as NSData) as! [NSArray]
for data in temp2{
let Type = NSKeyedUnarchiver.unarchiveObjectWithData(data[0] as! NSData) as! String
let Detail = NSKeyedUnarchiver.unarchiveObjectWithData(data[1] as! NSData) as! String
self.contacts.append(Contact(ContactType: Type, ContactDetail: Detail))
}
}
}
我已经在搜索人员视图上实现了prepareForSegue
,它应该发送所选行的数据。但我不知道从segue或NSUserDefaults
中选择数据。
你需要在故事板中给片段一个identifier
。然后在您的"搜索人员视图"控制器中实现prepareForSegue
方法。通过使用此方法,您可以将数据存储在纵断面图的一些字段变量中,从而将数据设置到下一个视图控制器(纵断面图)。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
super.prepareForSegue(segue, sender: sender)
if let vc = segue.destinationViewController as? ProfileViewController {
vc.profileData = selectedProfileData
}
}
如果您使用的是选项卡栏控制器,那么您可以使用以下方法传递数据b/w视图控制器
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
if(viewController.isKindOfClass(AddReminderViewController)){
let vc = viewController as! AddReminderViewController
vc.name = "Demo"
}
return false
}