首页 > 解决方案 > 从一个视图控制器移动到另一个视图控制器时如何保存表格视图数据?

问题描述

从一个视图控制器移动到另一个视图控制器时如何在表格视图中保存数据

当我退出应用程序或从视图控制器移动到视图控制器时,我试图让单元格保持不变但仍然没有运气

旁注:我的 CartVC 中的单元格是从另一个视图控制器填充的,当在视图控制器中选择一个项目时,它被传递到 CartVC 以填充单元格,每次我从一个 VC 移动到另一个(或关闭应用程序) CartVC 中的数据消失了如何将数据保存在 CartVC 中

class CartViewController: UIViewController, UITableViewDelegate, UITableViewDataSource{

    var selectedProduct: Items!

    var cart: [Cart] = []
    var groupedCartItems: [String: [Cart]] = [:]
    var brands: [String] = []

    @IBOutlet weak var cartTableView: UITableView!

    override func viewDidLoad() {
        super.viewDidLoad()

        // Do any additional setup after loading the view.        

        groupedCartItems = Dictionary(grouping: cart, by: {$0.cart.dispensaryName})
        dispensarySectionTitle = groupedCartItems.map{$0.key}.sorted()

    }

    override func viewDidAppear(_ animated: Bool) {
        super.viewDidAppear(true)
        masterCartTableView.reloadData()
    }

    func numberOfSections(in tableView: UITableView) -> Int {
        return brands.count
    }

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        let brand = brands[section]
        return groupedCartItems[brand]!.count
    }

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
        let cartCell = tableView.dequeueReusableCell(withIdentifier: "CartCell") as! CartCell        
        let brand = brands[indexPath.section]
        let itemsToDisplay = groupedCartItems[brands]![indexPath.row]
        cartCell.configure(withCartItems: itemsToDisplay.cart)

        return cartCell
    }

    func tableView(_ tableView: UITableView, viewForHeaderInSection section: Int) -> UIView? {
        let cartHeader = tableView.dequeueReusableCell(withIdentifier: "CartHeader") as! CartHeader       
        let headerTitle = brands[section]
        cartHeader.brandName.text = "Store: \(headerTitle)"

        return cartHeader
    }      
}

标签: iosswiftiphoneuitableview

解决方案


保存您的数组如下:

let yourArray : [Any] = [] //Change your array type according to your requirement
UserDefaults.standard.setValue(yourArray, forKey: "your_key")

并得到你的数组如下:

UserDefaults.standard.value(forKey: "your_key") //Get your array type according to you've saved before

推荐阅读