編集:私はUserDefaultsで間違っていることを誰かが理解している場合、私はする必要があります。これは私を狂ってしまう。UserDefaultsを使用して、削除されたアイテムがテーブルビューで削除されないようにすることに混乱しています
私が(セルが前のテーブルビューにタップされた依存れている)のviewDidLoadでsetPageで()関数
func setPage() {
let pageTitle = self.navigationItem.title
let userDefaults = UserDefaults.standard
let productData = userDefaults.object(forKey: "products") as? [String]
let productImageData = userDefaults.object(forKey: "productImages") as? [String]
ProductController.products = productData!
ProductController.productImages = productImageData!
switch pageTitle! {
case "Apple":
ProductController.products = appleProducts
ProductController.productImages = appleImages
case "Google":
ProductController.products = googleProducts
ProductController.productImages = googleImages
case "Twitter":
ProductController.products = twitterProducts
ProductController.productImages = twitterImages
case "Tesla":
ProductController.products = teslaProducts
ProductController.productImages = teslaImages
default:
ProductController.products = samsungProducts
ProductController.productImages = samsungImages
}
tableView.reloadData()
}
とテーブルビューを移入し、cellForRowAt indexPathでい
override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: cellId, for: indexPath) as! ProductCell
cell.textLabel?.text = ProductController.products[indexPath.row]
DispatchQueue.main.async {
cell.productLogoView.image = UIImage(named: ProductController.productImages[indexPath.row])!
}
return cell
}
そして、ここはどこです私は細胞の削除を処理します
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool
{
return true
}
override func tableView(_ tableView: UITableView, commit editingStyle: UITableViewCellEditingStyle, forRowAt indexPath: IndexPath)
{
if editingStyle == .delete
{
tableView.beginUpdates()
ProductController.products.remove(at: indexPath.row)
ProductController.productImages.remove(at: indexPath.row)
tableView.deleteRows(at: [indexPath], with: .fade)
let userDefaults = UserDefaults.standard
userDefaults.set(ProductController.products, forKey: "products")
userDefaults.set(ProductController.productImages, forKey: "productImages")
tableView.endUpdates()
}
}
私はページから移動する場合次に元に戻り、削除されたセルが再びそこにあります。私はviewDidLoadのtableViewに値を設定し、UserDefaultsを使用してこれを解決する方法があると思うが、これを実装する方法はわかりません。私はドキュメントを読んで解決策を探しましたが、この特定のユースケースで私を助けるものは何も見つかりません。
削除したセルを再起動するまで削除されたセルを削除しないようにするにはどうすればよいですか?
配列の初期化 - 私はproductとproductImagesの空の配列を持っているので、setPage()はタイトルをチェックし、空の配列に対応する会社の製品と製品イメージを入力します。
static var products = [String]()
var appleProducts = ["iPad", "iPod", "iPhone"]
var googleProducts = ["Search", "Firebase", "Pixel"]
var twitterProducts = ["Twitter", "Periscope", "Vine"]
var teslaProducts = ["Tesla Model S", "Tesla Model X", "Tesla Powerwall"]
var samsungProducts = ["Samsung Galaxy", "Samsung Note", "Samsung Tab"]
static var productImages = [String]()
var appleImages = ["iPad", "iPod", "iPhone"]
var googleImages = ["GoogleLogo", "Firebase", "Pixel"]
var twitterImages = ["TwitterLogo", "Periscope", "Vine"]
var teslaImages = ["TeslaS", "TeslaX", "TeslaPowerwall"]
var samsungImages = ["SamsungGalaxy", "SamsungNote", "SamsungTab"]
商品や画像に固有の識別子はありますか? – random
あなたは何を意味するのかわかりません – d0xi45
UserDefaultsコードを試しましたか?それに問題がある場合、何が起こっているのかを投稿してください。 – Connor