来自segue或NSUserdefault的UIViewController选项数据



我在控制器之间传递数据时遇到问题。在需求中,我使用了选项卡栏,有"搜索人员视图"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   
}

最新更新