iOS Swift - 按下按钮后刷新整个应用程序

标签 ios swift refresh segue unwind-segue

我有一个名为 ChangeViewController 的模态显示 View Controller ,它允许用户更改有关他/她的个人资料的一些信息。当用户完成后,按下“ACCEPT CHANGES”按钮,我使用 unwind segue 退出 ChangeViewController 并返回主屏幕。

我是否可以在执行此展开转场之前刷新整个应用程序的数据?截至目前,用户修改后,主屏幕和其他屏幕上的信息保持不变。只有在应用程序重新启动后,信息才会更新。有没有办法以编程方式“重新启动”,以便所有 View Controller 都是最新的?更具体地说,有没有办法调用所有 View Controller 的 viewDidLoad 函数以便更新它们的数据?

首选 Swift 解决方案。谢谢!

最佳答案

我经常在用户使用这样的功能更改后更新 UI。这非常简单,您只需在更新 UI 时调用该函数即可。

func updateUI() {
    // Redraw your labels, update your UIElements, do what you have to do
}

一种可以在不关闭应用程序的情况下从模态呈现的 ViewController 调用此函数的方法是委托(delegate),因为模态呈现不会将旧的 ViewController 抛出堆栈和堆,委托(delegate)的工作方式如下:

在你的模态 Controller 中:

protocol ChangeViewControllerDelegat: class {
    func updateUI(sender:UIButton)
}

class ChangeViewController: UIViewController {

weak var delegate: ChangeViewControllerDelegat?

func opChangingUserSettings() {
     // Change settings with your code

     // tell your ViewController to do it. 
     delegate?.updateUI()
}

在你的主VC中

class MainViewController: UIViewController, ExtensionViewControllerDelegate {
       func updateUI() {
        // Redraw your labels, update your UIElements, do what you have to do
       }
}

希望对您有所帮助!

顺便说一句,您是否正在尝试随时更改语言?如果是这样,我可以告诉你如何做到这一点。如果没有,如果我理解你的问题,这应该有效。

关于iOS Swift - 按下按钮后刷新整个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31980502/

相关文章:

ios - MPNowPlayingInfoCenter 不适用于模拟器

ios - 无法在 Swift 中获取 UITextField 的 .text 属性——错误 : "Instance member ' textFieldName' cannot be used on type 'ViewController'

ios - Swift ViewController 不刷新背景颜色

ios - Visual Studio Xamarin - 使用 Web 服务构建发布 iOS 项目时出现问题

iphone - iOS —将方法映射到数组

ios - 将 IOS 中的应用程序功能限制为仅使用 Cell/WiFi 数据。

ios - 是否有 NSPredicate 来过滤具有一对多关系的模型(过滤多个)?

swift - 在 AppDelegate.swift 中导入 AdColony 时出现 "no module available"

javascript - 刷新页面的一部分(div)

java - 从数据库中删除项目后刷新 jtable