将值传递给前一个viewController,不调用委托方法
问题描述:
我从函数中获取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
}
}
}
答
尝试改变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的帮助。 –
这是行'vc.delegate =自我“实际上被称为?你为什么比较segue和一个字符串?它应该是'segue.identifier' – alexburtnik
只需传递prepareForSegue ... – AMAN77