我是Swift的新手,所以我不确定这是否可行;但是我有一些代码,其中每种食物类型的价值都是千克。我使用增量按钮选择每种食物类型的选择,并使用countLabel显示此标记。然后将kgs中的值添加到所有食物组合的currentTotal中。此当前总数被委托给另一个类/故事板。我已经检查了,我的代表团和理货工作正在进行中。但是currentTotal不是。基本上currentTotal保持在每种情况类型中,例如,如果我将西瓜增加2并且西瓜每个增加10kg,则currentTotal为20kg。如果我切换类型(点击另一种食物类型的增量按钮),则currentTotal从0开始并将为该类型执行currentTotal,例如水值2kg。如果我点击两次增量按钮,则waterTally等于2,currentTotal现在显示为4kg。如果我切换回西瓜,则currentTotal再次为20kg(因此每种类型的currentTotal都是持久的)。但是我希望currentTotal等于所有类型的总和,而不仅仅是每种类型的currentTotal。我尝试在每种情况下将currentTotal更改为类型total(即“waterTotal”),然后在案例之外写入currentTotal = waterTotal + carrotTotal + watermelonTotal + avocadoTotal
(我将其添加到delegate?.showTotal(currentTotal)
正上方的函数中,但结果如上所述。是否只能添加值不同的开关案例还是有一些方法可以做到这一点?下面是我所指的类和委托对象类。谢谢
Apologies, I was asked to remove the code as it will be committed to a private repo.
您为每种类型创建一个新视图
for type in incrementTypes {
let nib = UINib(nibName: "WildlifeIncrementer", bundle: nil).instantiate(withOwner: self, options: nil)
这意味着每种类型都有自己的currentTotal
所以当你调用showTotal
时,只有最后一个视图中的值包含在currentTotal
的WildlifeCalculatorViewController
中
现在第一个答案是将showTotal
改为
func showTotal(_ total: Int) {
currentTotal += total
totalLabel.text = ("\(currentTotal)kg")
}
但是在添加和删除项目时你需要单独调用它(并且你需要允许它为负数)。
更好的解决方案是重新设计视图类和委托模式的实现,您希望每种类型一个视图还是一个视图?您可能还可以使用单独的类来保存计数/重量数据并进行计算。