gpt4 book ai didi

Swift:连续两次将数据从一种形式传递到另一种形式:第二次拒绝传递

转载 作者:行者123 更新时间:2023-11-30 10:05:44 25 4
gpt4 key购买 nike

我正在开发一个由表单组成的应用程序,其结构如下:

  • MainForm(名为:CorrosionRate)
  • MainForm Continuation(带有 MainTable - 名为:CorrosionERMeasurement)
  • 主表表单(带有子表 - 名为:CorrosionSampleTreatment)
  • 子表表单

这个想法基本上是一个表中的表。每个表都有一个标识符,即“父表”。 MainTable 的父级是 MainForm,SubTable 的父级是 MainTable。

我们通过 prepareForSegue 在表单之间传递此信息:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if segue.identifier == "CorrosionAddERMeasurementSegue" {
let vc : CorrosionAddERMeasurementFormViewController = segue.destinationViewController as! CorrosionAddERMeasurementFormViewController
vc.selectedCorrosionRateID = self.selectedCorrosionRateID
}
}

对于第一部分,效果很好。我可以将MainForm的ID传递给MainTable Form,确保无论MainTable的实际ID是什么,它总是属于MainForm。

这就是事情变得危险的地方:

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject!) {
if segue.identifier == "AddCorrosionSampleTreatmentSegue" {
let vc : CorrosionAddSampleTreatmentFormViewController = segue.destinationViewController as! CorrosionAddSampleTreatmentFormViewController
vc.selectedCorrosionErMeasurementID = self.selectedCorrosionErMeasurementID
}
}

当下一个 xib 加载时,我立即打印 selectedCorrosionErMeasurementID 的值,该值返回 nil

这是切换到下一种形式的代码:

func addSampleButtonPressed() {
print("Add Button Pressed. Selected Corrosion Measurements: \(self.selectedCorrosionErMeasurementID)")
self.performSegueWithIdentifier("CorrosionAddSampleTreatmentSegue", sender: self)
}

这确实打印出了正确的父 ID 值。以下是子表表单的开头语句:

class CorrosionAddSampleTreatmentFormViewController: BaseViewController, SampleTreatmentFormViewDelegate, UIPickerViewDataSource,UIPickerViewDelegate,UICollectionViewDataSource, UICollectionViewDelegate {
var corrosionAddSampleFormView : SurfaceThermalSamplingAddSamplingView!
var selectedCorrosionErMeasurementID : String!

override func viewDidLoad() {
print("Selected ID from FormCorrosionER is: \(self.selectedCorrosionErMeasurementID)")
super.viewDidLoad()
}
}

没有任何迹象表明该值正在被删除。

有什么需要我检查的吗?也许我能进入的深度是有限的?有什么建议吗?

最佳答案

假设我理解正确,我相信您的 segue 标识符不匹配

self.performSegueWithIdentifier("CorrosionAddSampleTreatmentSegue", sender: self)

对比

if segue.identifier == "AddCorrosionSampleTreatmentSegue" {

如果第一行应该通向第二行,则标识符必须相同。

关于Swift:连续两次将数据从一种形式传递到另一种形式:第二次拒绝传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36095087/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com