Store selected cell in TableView
Solution to this question
import Foundation import UIKit class LocalisatorVC: UIViewController, UITableViewDataSource, UITableViewDelegate { @IBOutlet var tableViewLanguages: UITableView! @IBOutlet weak var continueBtn: UIButton! var arrayLanguages:[String] = Localisator.sharedInstance.getArrayAvailableLanguages() var selectedRow: String { return UserDefaults.standard.value(forKey: "CurrentLanguageKey") as? String ?? "" } override func viewDidLoad() { super.viewDidLoad() } // MARK: - UITableViewDataSource protocol conformance func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return arrayLanguages.count } public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell = tableView.dequeueReusableCell(withIdentifier: "cellLocalisator") as? LocalisatorCell let language = arrayLanguages[indexPath.row] cell!.lblLanguage?.text = Localization(language) if selectedRow == language { cell?.imageSelected.image = UIImage(named: "checkBlueCircle.png") }else { cell?.imageSelected.image = UIImage(named: "nil") } return cell! } // MARK: - UITableViewDelegateprotocol conformance func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { let language = arrayLanguages[indexPath.row] UserDefaults.standard.set(language, forKey: "CurrentLanguageKey") if SetLanguage(arrayLanguages[indexPath.row]) { let alert = UIAlertView(title: nil, message: Localization("languageChangedWarningMessage"), delegate: nil, cancelButtonTitle: "OK") alert.show() } tableViewLanguages.reloadData() } } class LocalisatorCell: UITableViewCell { @IBOutlet weak var imageSelected: UIImageView! @IBOutlet weak var lblLanguage: UILabel! }
Hello Abrcd18
Link: https://stackoverflow.com/questions/51911991/how-can-i-save-checked-rows-of-tableview-in-userdefault/51923705#comment121897109_51923705
Solution:
// // Within SMViewController.swift file. // class SMViewController: UIViewController, UITableViewDataSource { @IBOutlet weak var myTableView: UITableView! func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return 1 } func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell: SMCell = tableView.smDequeueReusableCell(forIndexPath: indexPath) cell.delegate = self return cell } } extension SMViewController: MyCellDelegate { func didClickButton(cell: SMCell) { if let indexPath = self.myTableView.indexPath(for: cell) { // 1) Get all indexes var allIndexes = UserDefaults.standard.array(forKey: "myIndexes") as? [Int] ?? [] // 2) Append current selected index allIndexes.append(indexPath.row) // 3) Store updated indexes in user defaults. UserDefaults.standard.setValue(allIndexes, forKey: "myIndexes") } } } // // Within SMCell.swift file. // protocol MyCellDelegate: AnyObject { func didClickButton(cell: SMCell) } class SMCell: UITableViewCell { weak var delegate: MyCellDelegate? @IBOutlet weak var myButton: UIButton! /// Link this button to your `TableViewCell` @IBAction func smButtonHandler(_ sender: UIButton) { self.delegate?.didClickButton(cell: self) } }
Hope to get upvote Abrcd18 🆙 😎.
Santosh Maharjan
0
Tags :