我遇到控制器之间传递数据的问题。在要求中,我使用了标签栏,有“搜索人员视图”和“个人资料视图”的根。当我单击配置文件视图时,数据来自我的NSUserDefaults
数据,但如果我从搜索人员视图中单击人员单元格,则配置文件视图应显示来自人员单元格的数据。我很困惑如何处理这种情况。是否可以识别配置文件视图中的segue标识符。
请帮助,更喜欢快速代码
更新:
这是我在“搜索人员视图”中的代码:
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
中选择数据。
答案 0 :(得分:0)
您需要在故事板中为segue指定identifier
。然后在“搜索人员视图”控制器实现prepareForSegue
方法。通过使用此方法,您可以将数据存储到下一个viewcontroller(配置文件视图)中,方法是将它们存储在一些配置文件视图的字段变量中。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
super.prepareForSegue(segue, sender: sender)
if let vc = segue.destinationViewController as? ProfileViewController {
vc.profileData = selectedProfileData
}
}
答案 1 :(得分:0)
如果您使用标签栏控制器,则可以使用以下方法传递数据黑白视图控制器
func tabBarController(tabBarController: UITabBarController, shouldSelectViewController viewController: UIViewController) -> Bool {
if(viewController.isKindOfClass(AddReminderViewController)){
let vc = viewController as! AddReminderViewController
vc.name = "Demo"
}
return false
}