Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

471
Views
Actualizar datos principales en ViewController cuando se descarta la vista modal (2nd VC)

Tengo 2 ViewControllers:

VC1 llena su vista de tabla en función del atributo CoreData isPicked, que es bool y muestra solo elementos con estado true . VC2 es un segundo controlador de vista modal (no de pantalla completa) que permite al usuario cambiar el estado del atributo isPicked: marque y desmarque el elemento (haga que sea verdadero o falso) y después de presionar el botón Guardar, los cambios se guardarán en CoreData y VC2 será despedido. Sin embargo, VC1 no se actualiza con los cambios recientes que provienen de VC2.

Lo que probé:

  • cargue mi matriz para mostrar en VC1 en viewWillAppear(), pero como mi VC2 es una vista modal y no en pantalla completa, este método llama solo una vez
  • intenté implementar el protocolo y delegar, pero el resultado es el mismo: no puedo volver a cargar los datos (pero suponga que podría hacerlo mal)

Mi VC1:

 override func viewDidLoad() { super.viewDidLoad() let predicate = NSPredicate(format: "isPicked == YES") converterArray = load(for: tableView, and: predicate) } func load(for tableView: UITableView, with request: NSFetchRequest<Currency> = Currency.fetchRequest(), and predicate: NSPredicate? = nil, sortDescriptor: [NSSortDescriptor] = [NSSortDescriptor(key: "shortName", ascending: true)]) -> [Currency] { var array = [Currency]() request.predicate = predicate request.sortDescriptors = sortDescriptor do { array = try context.fetch(request) } catch { print(error) } DispatchQueue.main.async { tableView.reloadData() } return array }

Mi VC2:

 @IBAction func saveButtonPressed(_ sender: UIBarButtonItem) { do { try context.save() } catch { print(error) } dismiss(animated: true) }

También mire un GIF corto donde muestro lo que sucede: HAGA CLIC

No sé cómo después del despido de VC2 se actualizan automáticamente los cambios en VC1...

over 4 years ago · Santiago Trujillo
1 answers
Answer question

0

Supongo que los datos se guardan correctamente en VC2 y el único problema que tiene es la forma correcta de recargar los datos en VC1.

Hacer que VC1 se ajuste a UIViewControllerTransitioningDelegate e implementar su función de delegado animationController(forDismissed dismissed: UIViewController) podría resolver su problema

Leer más aquí

Prueba esto

 // Some function in VC1 which loads VC2 func loadVC2() { let newVC = UIViewController() // This is important newVC.transitioningDelegate = self present(newVC, animated: true, completion: nil) }

Luego, en VC1, implemente la función animationController(forDismissed dismissed: UIViewController)

 extension VC1: UIViewControllerTransitioningDelegate { // UIViewControllerTransitioningDelegate delegate function auto invoked during modal transitions func animationController(forDismissed dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? { print("returned back") // reload your table in VC1 here /// Returning nil as per guidelines return nil } }

Pruébelo y vea si esto resuelve su problema.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!