Загрузка...

How to Reload UITableView from Another ViewController in Swift

Learn how to effectively call `reloadData` on a `UITableView` from a different ViewController in Swift when updating data stored in UserDefaults.
---
This video is based on the question https://stackoverflow.com/q/66935621/ asked by the user 'e.T55' ( https://stackoverflow.com/u/4655450/ ) and on the answer https://stackoverflow.com/a/66935845/ provided by the user 'Владимир Ковальчук' ( https://stackoverflow.com/u/8701419/ ) at 'Stack Overflow' website. Thanks to these great users and Stackexchange community for their contributions.

Visit these links for original content and any more details, such as alternate solutions, latest updates/developments on topic, comments, revision history etc. For example, the original title of the Question was: How to call tableview reloadData from another viewcontroller

Also, Content (except music) licensed under CC BY-SA https://meta.stackexchange.com/help/licensing
The original Question post is licensed under the 'CC BY-SA 4.0' ( https://creativecommons.org/licenses/by-sa/4.0/ ) license, and the original Answer post is licensed under the 'CC BY-SA 4.0' ( https://creativecommons.org/licenses/by-sa/4.0/ ) license.

If anything seems off to you, please feel free to write me at vlogize [AT] gmail [DOT] com.
---
How to Reload UITableView from Another ViewController in Swift

When developing applications in Swift, you might encounter scenarios where you need to update a UITableView in response to an action performed in a different ViewController. For instance, you may have a button to save information that affects the data displayed in a UITableView on another screen. This can lead to confusion, especially regarding effectively updating the UI with new data.

Problem Overview

In our specific case, you want to refresh a UITableView after saving multi-line text in UserDefaults via a button tap in one ViewController. After implementing an observer, you noticed that the data does not refresh immediately; the table is updated only after restarting the app. Here’s the situation laid out:

You have a UIButton called saveTapped.

This button saves user input into UserDefaults.

You want the UITableView displayed in another ViewController to reflect this new information immediately.

Solution Breakdown

Using NotificationCenter

The first step is to ensure that when your data is saved, other parts of your application can be notified. You can use NotificationCenter for this purpose. Here’s a basic breakdown on how to implement this:

Step 1: Post Notification in Save Function

In your saveTapped method, you want to load the new data into your UITableView after saving:

[[See Video to Reveal this Text or Code Snippet]]

Step 2: Observer in the FavoritesViewController

In the FavoritesViewController, listen for the notification and reload your data:

[[See Video to Reveal this Text or Code Snippet]]

Step 3: Reload Data Upon Notification

Modify the loadList method to reload the list correctly:

[[See Video to Reveal this Text or Code Snippet]]

Conclusion

By following this approach, you can effectively communicate between different ViewControllers and update your UITableView with the latest data from UserDefaults. Whenever the saveTapped function is executed, it posts a notification which leads to the FavoritesViewController reloading its data and updating the user interface accordingly. This not only enhances user experience by providing immediate feedback but also leverages Swift’s NotificationCenter for clean event-driven communication between components.

By implementing this pattern, you'll be able to manage data flow and UI updates more effectively in your applications. Happy coding!

Видео How to Reload UITableView from Another ViewController in Swift канала vlogize
Яндекс.Метрика

На информационно-развлекательном портале SALDA.WS применяются cookie-файлы. Нажимая кнопку Принять, вы подтверждаете свое согласие на их использование.

Об использовании CookiesПринять