我刚开始写代码,如果这很基础,请原谅我。我几乎完成了我的第一个应用程序,它是我使用故事板构建的。现在,这是一个简单的“存钱罐”,我可以在主屏幕上输入我在特定日期工作时获得的小费数量,然后在第二个屏幕上将其添加到运行总数中。这些“小费”值都存储在一个数组中。我想在第二个屏幕上创建一个按钮,用于删除数组中的所有值。
我将在下面发布我的代码,但似乎如果我将
.removeAll()
与 saveDefaults
和 loadDefaults
一起使用,值将从数组中删除,但只有在我关闭并重新打开应用程序之后。如果我按下按钮但继续使用该应用程序,值将继续添加到数组中而不删除任何值。我想如果该按钮在应用程序仍处于打开状态并正在使用时删除所有值。
任何帮助都会很棒,谢谢!
这是“运行总计”屏幕的代码,这是我有相关按钮代码的地方:
import UIKit
class TipTotalView: UIViewController {
@IBOutlet weak var totalTip: UILabel?
var tipToText = ""
override func viewDidLoad() {
super.viewDidLoad()
totalTip?.text = tipToText
}
@IBAction func emptyPiggy(_ sender: Any) {
let cs = CalcScreen(nibName: "CalcScreen", bundle: nil)
cs.tipArray.removeAll()
cs.saveDefaults()
cs.loadDefaults()
print(cs.tipArray)
}
}
这是主屏幕的其余代码,可能是相关的(可能底部的 addToday 按钮很重要?)。
UIKit
class CalcScreen: UIViewController {
@IBOutlet weak var tipAmount: UILabel!
var tipArray: [Int] = []
var tipArrayTotal: Int {
return tipArray.reduce(0, +)
}
func loadDefaults()
{
tipArray = UserDefaults.standard.array(forKey: "tipArray") as? [Int] ?? []
}
func saveDefaults()
{
UserDefaults.standard.set(tipArray, forKey: "tipArray")
}
var tip = String()
let vc = TipTotalView(nibName: "TipTotalView", bundle: nil)
override func viewDidLoad() {
super.viewDidLoad()
loadDefaults()
}
func clearTip() {
tip = String()
tipAmount.text = "0"
}
func addToTip (value: String) {
tip += value
tipAmount.text = String(tip)
}
@IBAction func zero(_ sender: Any) {
addToTip(value: "0")
}
@IBAction func clear(_ sender: Any) {
clearTip()
}
@IBAction func one(_ sender: Any) {
addToTip(value: "1")
}
@IBAction func two(_ sender: Any) {
addToTip(value: "2")
}
@IBAction func three(_ sender: Any) {
addToTip(value: "3")
}
@IBAction func four(_ sender: Any) {
addToTip(value: "4")
}
@IBAction func five(_ sender: Any) {
addToTip(value: "5")
}
@IBAction func six(_ sender: Any) {
addToTip(value: "6")
}
@IBAction func seven(_ sender: Any) {
addToTip(value: "7")
}
@IBAction func eight(_ sender: Any) {
addToTip(value: "8")
}
@IBAction func nine(_ sender: Any) {
addToTip(value: "9")
}
@IBAction func addToday(_ sender: Any) {
let tipNum = Int(tip) ?? 0
tipArray.append(tipNum)
saveDefaults()
vc.tipToText = String(tipArrayTotal)
vc.totalTip?.text = vc.tipToText
clearTip()
navigationController?.pushViewController(vc, animated: true)
print(tipArray)
print(tipArrayTotal)
print(vc.tipToText)
}
}