2017-02-23 71 views
2

我从函数中获取schoolAddress的值。视图消失后,我传递schoolAddress的值。米试图从GeoDetailsVC通过学校地址的值EditChildPoofileVC .. thanx提前将值传递给前一个viewController,不调用委托方法

protocol DataEnteredDelegate : class { 
    func setLocations(info: String) 
} 

class GeoDetailsVC: UIViewController{ 
    weak var delegate: DataEnteredDelegate? = nil 
    var schoolAddress: String = "" 

    override func viewDidDisappear(animated: Bool) { 
     self.delegate?.setLocations(self.schoolAddress) 
     print(schoolAddress) 
    } 
} 

class EditChildProfileVC: UIViewController, DataEnteredDelegate { 

    var locationSentFromGeoDetailsVC:String? 
    @IBOutlet weak var schoolAddressTF: UITextField! 

    override func viewDidLoad() { 
     super.viewDidLoad() 
     print("EditChildProfileVC") 
     self.title = ChildName 
    } 

    func setLocations(info: String) { 
     NSOperationQueue.mainQueue().addOperationWithBlock { 
      self.locationSentFromGeoDetailsVC = info 
      self.schoolAddressTF.text = self.locationSentFromGeoDetailsVC 
     } 
    } 

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
     if segue == "GeoDetailsSegue" { 
      let vc = segue.destinationViewController as! GeoDetailsVC 
      vc.delegate = self 
     } 
    } 
} 
+0

这是行'vc.delegate =自我“实际上被称为?你为什么比较segue和一个字符串?它应该是'segue.identifier' – alexburtnik

+0

只需传递prepareForSegue ... – AMAN77

回答

1

尝试改变segue == "GeoDetailsSegue"segue.identifier == "GeoDetailsSegue",像这样:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) { 
    guard let segueIdentifier = segue.identifier else { return } 
    if segueIdentifier == "GeoDetailsSegue", 
     let vc = segue.destinationViewController as? GeoDetailsVC { 
     vc.delegate = self 
    } 
} 
+0

的数据,这是一个愚蠢的错误... thnx的帮助。 –