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

时间:2019-11-25 13:03:32

标签: ios swift iphone uitableview

从一个View Controller移到另一个View Controller时如何在tableview中保存数据

当我退出应用程序或从视图控制器移到视图控制器时,我试图让单元格保留下来。我尝试过在堆栈上使用多个解决方案,并且尝试过viewDidAppear来保持单元格数据保留下来在CartVC中,但仍然没有运气

侧面注:我的CartVC中的单元格是从另一个View Controller填充的,每当我从一个VC移到另一个VC(或关闭)时,当在视图控制器中选择一个项目时,它将传递到CartVC中以填充这些单元格该应用程序)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
    }      
}

2 个答案:

答案 0 :(得分:0)

如果您希望保存数据,则可以使用用户默认设置

将其保存在本地

let Defaults = UserDefaults.standard
Defaults.set(Yourvalue, forKey: "yourkey")
Defaults.synchronize()

通过

访问
let yourvalueuset  =  UserDefaults.standard.string(forKey: "yourkey")

答案 1 :(得分:0)

将数组保存如下:

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