【发布时间】:2020-03-20 18:50:09
【问题描述】:
从一个 View Controller 移动到另一个 View Controller 时如何在 tableview 中保存数据
当我退出应用程序或从视图控制器移动到视图控制器时,我试图让单元格保持不变在 CartVC 但仍然没有运气
旁注:我的 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
}
}
【问题讨论】:
-
为此,您需要将数据保存在Coredata,Sqlite等本地数据库中。如果数据不是那么重,那么您也可以将其保存在用户默认值中。
-
我使用 cloud firestore 作为我的数据库,@swapnil pate 我将如何使用 User default 暂时存储
-
暂时可以将数组数据保存到User default中。
-
我对如何使用用户默认设置有点困惑,因为我并没有真正习惯在我的代码中使用它们,最好的方法是什么?
标签: ios swift iphone uitableview