gpt4 book ai didi

ios - unwindToViewController 外的 Swift 属性 nil

转载 作者:行者123 更新时间:2023-11-28 08:29:04 26 4
gpt4 key购买 nike

为了在 View 之间传递数据,我决定使用一个“临时”对象作为我的 View 的数据模型。

var tempMedecine = TempMedecine()
var xValue = 0

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if let dmController = segue.destinationViewController as? JRBDosageMainTableViewController {
dmController.tempMedecine = self.tempMedecine
}
}

@IBAction func unwindToViewController(segue: UIStoryboardSegue) {
if let dosageController = segue.sourceViewController as? JRBDosageMainTableViewController {
self.tempMedecine = dosageController.tempMedecine!
self.xValue = 10
let dosageCell = tableView.cellForRowAtIndexPath(NSIndexPath(forRow: 1, inSection: 0))
dosageCell?.detailTextLabel?.text = String(self.tempMedecine.dosageQuantity!) + " " + self.tempMedecine.dosageQuantityType!
}
}

override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject?) -> Bool {
if identifier == "saveMedecine" {
print(xValue)
guard tempMedecine.name != nil else {
Common.genericAlertController(self, title: "Error", message: "You need to define a name", preferedStyle: .Alert)
return false
}
guard self.tempMedecine.dosageQuantityType != nil else {
Common.genericAlertController(self, title: "Error", message: "You need to set a quantity", preferedStyle: .Alert)
return false
}

}
else {
return true
}
return false
}

这是我需要处理验证的“索引”viewController 中的一些代码。

如您所见,我所有的 viewController 都有一个名为 tempMedecine 的属性.我传递它并在需要时更新数据。

问题是 self.tempMedecine.dosageQuantityType返回 nilshouldPerformSegueWithIdentifier方法但不返回 nilunwindToViewController方法。

我认为我的 TempMedecine 可能有两个实例对象,但事实并非如此。我还认为我传递 tempMedecine 的方式可能有问题我的 viewControllers 之间的变量,但属性 tempMedecine.name已有效传输,唯一的区别是此属性设置在我要实现验证的同一个 viewController 中:

func textFieldShouldReturn(textField: UITextField) -> Bool {
textField.resignFirstResponder()
self.tempMedecine.name = textField.text
return true
}

看起来我真的在使用两个不同的范围。我一离开 unwindToViewController方法,我会回到另一个范围,其中 tempMedecine变量未更新。

但奇怪的是当我使用像 xValue 这样的简单变量时.如果我在 unwindToViewController 中更新它的值方法我在 shouldPerformSegueWithIdentifier 中得到正确的值

我错过了什么?感谢您的帮助。

最佳答案

好的,我修好了。发生的事情是,如果用户决定单击导航栏中的后退按钮,我会执行一些代码来重置数据源,即 tempMedecine:

if self.isMovingToParentViewController() {
tempMedecine?.dosageQuantity = nil
tempMedecine?.dosageQuantityType = nil
}

问题是,我从来没有想过问题可能来自于此,因为我可以在展开到索引 viewController 后使用 tempMedecine 数据来设置我的 tableView 中的值,但是我完全错过了当对象通过了我的引用。

关于ios - unwindToViewController 外的 Swift 属性 nil,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39270236/

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