来自segue或NSUserdefault的UIViewController选项数据

时间:2016-01-06 09:19:41

标签: ios uiviewcontroller uitabbarcontroller nsuserdefaults

我遇到控制器之间传递数据的问题。在要求中,我使用了标签栏,有“搜索人员视图”和“个人资料视图”的根。当我单击配置文件视图时,数据来自我的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中选择数据。

2 个答案:

答案 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   
}