它是这样的:SuperVC - > ChildVC - > secondChildVC
这是superVC segue:
var destination = [DestinationData]()
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "DestinationDetailVC"{
let detailVC = segue.destination as? DestinationDetailVC
if let data = sender as? DestinationData{
detailVC?.destinationDetail = data
}
}
}
这是第二个vc segue
var destinationDetail : DestinationData?
@IBAction func goToMapOnPressed(_ sender: Any) {
let detail = destinationDetail
self.performSegue(withIdentifier: "DestinationMapVC", sender: detail )
print(detail)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "DestinationMapVC"{
let detailVC = segue.destination as? DestinationMapVC
if let data = sender as? DestinationData{
detailVC?.destinationMapDetail = data
}
}
}
由于
答案 0 :(得分:0)
我认为你要将DestinationData
的数组发送到第一个segue,但是在第一个segue中你放了条件,所以如果数据是DestinationData
种类,那么数据将是发送到nextVC,但实际上你发送的是DestinationData
对象的数组,因此if条件失败,因此数据不会传递给childVC
这就是为什么你可能在secondChildVC
中获得nil,因为destinationDetail
childVC
中没有数据。
因此,您可以修改条件以检查数组,因为destination
包含数组类型的数据。或者从prepareSegue
方法中删除条件。
代码:
//Write this code in to get that clicked object then pass that object in sender
let destTemp = sender[your selected index]
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "DestinationDetailVC"{
let detailVC = segue.destination as? DestinationDetailVC
if let data = sender as? DestinationData{
detailVC?.destinationDetail = data
}
}
}
希望它有所帮助。
快乐的编码......