开发者社区> 问答> 正文

当您关闭应用程序时,我无法保存我的计算

我想在这里做几件事

第一:我正在尝试保存标签中的计算,即使在关闭应用程序时也是如此。

第二:在将新值添加到tableView之后,我正在尝试使计算不断添加到每个表中。目前,如果我添加了一个产品,它计算并打印在标签中,那么当我添加另一个产品时,它会清除它并执行新的计算,但我希望它继续相互添加。

第三:(这还没有加进去,我只计算了利润和总数),我试图让它加起来添加了多少tableView单元格,然后用ordersLabel打印并保存

然后,我只需要有所有的标签,以保存价值,并继续添加,一旦有人添加另一个产品。

表视图保存,但不保存标签。

如果有人能帮得上忙的话!

import UIKit

class ViewController: UIViewController, UIAdaptivePresentationControllerDelegate, UITextFieldDelegate, UITableViewDataSource {

    @IBOutlet weak var tableView: UITableView!

    @IBOutlet weak var productTextField: UITextField!
    @IBOutlet weak var productPriceTextField: UITextField!
    @IBOutlet weak var productSaleTextField: UITextField!

    @IBOutlet weak var orderLabel: UITextField!
    @IBOutlet weak var costLabel: UILabel!
    @IBOutlet weak var profitLabel: UILabel!
    @IBOutlet weak var totalLabel: UILabel!


    var items: [ItemRow] = []

    struct ItemRow: Codable{
        var first: String
        var second: String
        var third: String
        }

    override func viewDidLoad() {
        super.viewDidLoad()
        load()
        // Do any additional setup after loading the view.
    }

    @IBAction func addButtonTapped(_ sender: Any) {
        insertNewItems()
        save()
    }

    func save(){
           if let data = try? PropertyListEncoder().encode(items) {
               UserDefaults.standard.set(data, forKey: "SavedItems")
           }

       }

       func load(){
           let defaults = UserDefaults.standard
           if let data = defaults.data(forKey: "SavedItems") {
               items = try! PropertyListDecoder().decode([ItemRow].self, from: data)


           }

       }

    func insertNewItems() {

        let newVideoRow = ItemRow(first: productTextField.text!, second: productPriceTextField.text!, third: productSaleTextField.text!)
        items.append(newVideoRow)

        let indexPath = IndexPath(row: items.count - 1, section: 0)
        tableView.insertRows(at: [indexPath], with: .automatic)

        if let priceValue = Double(productPriceTextField.text!),
            let saleValue = Double(productSaleTextField.text!) {
             profitLabel.text = String(saleValue - priceValue)


           }
        if let priceValue = Double(productPriceTextField.text!),
            let saleValue = Double(productSaleTextField.text!) {
             totalLabel.text = String(saleValue + priceValue)


        }


        productTextField.text = ""
        productPriceTextField.text = ""
        productSaleTextField.text = ""
        view.endEditing(true)
        }

    }




extension ViewController: UITableViewDelegate{

func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
    return items.count
}


func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
    let ItemTitle = items[indexPath.row]

    let cell = tableView.dequeueReusableCell(withIdentifier: "ItemCell") as! ItemCell
    cell.productCellLabel.text = ItemTitle.first
    cell.productPriceCellLabel.text = ItemTitle.second
    cell.productSaleCellLabel.text = ItemTitle.third

    tableView.separatorColor = UIColor(red:0.92, green:0.92, blue:0.92, alpha:1.0)
    return cell
}


func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
    return true
}


func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCell.EditingStyle, forRowAt indexPath: IndexPath) {

    if editingStyle == .delete {
        items.remove(at: indexPath.row)

        tableView.beginUpdates()
        tableView.deleteRows(at: [indexPath], with: .automatic)
        tableView.endUpdates()
        save()
        }
    }
}

展开
收起
游客5akardh5cojhg 2019-12-14 18:13:46 393 0
0 条回答
写回答
取消 提交回答
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载

相关实验场景

更多