gpt4 book ai didi

ios - 在弹出 segue 为 'dismissed' 后刷新父 View 上的 IBOutlet 外观

转载 作者:行者123 更新时间:2023-11-29 00:33:49 25 4
gpt4 key购买 nike

我有一个由主屏幕和“设置”屏幕(弹出模式)组成的小应用程序。我使用 iOS segue 加载设置弹出窗口。

在设置弹出窗口中,您基本上将背景设置为浅色或深色,但我不确定在模式被关闭后如何加载我的“makeScreenLight”方法。

我是否使用 viewDidAppear,如何调用它?

或者我是在关闭弹出窗口之前或期间将它与 dismiss 方法一起使用:

@IBAction func BackFromSettings(_ sender: AnyObject) {
dismiss(animated: true, completion: nil)
}

最佳答案

有多种方法可以实现这一点,包括全局状态、通知和委派。我将举一个使用委托(delegate)的例子:

首先,我们将创建一个定义委托(delegate)关系的协议(protocol)。

protocol SecondViewControllerDelegate: class {
func settingsUpdated(light: Bool)
}

接下来,我们将使第一个 View Controller 符合这个新协议(protocol),并实现它的一个方法。我们还将确保在我们进行 segue 时将第二个 View Controller 的委托(delegate)设置为第一个 View Controller 。

class FirstViewController: UIViewController, SecondViewControllerDelegate {

func settingsUpdated(light: Bool) {
// modify the UI here
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
guard let secondViewController = segue.destination as? SecondViewController else { return }
secondViewController.delegate = self
}

}

当第二个 View Controller 中发生 Action 时(在本例中是按下开关),我们可以在我们的委托(delegate)上调用该方法。这将在第一个 View Controller 中进行更改。

class SecondViewController: UIViewController {

weak var delegate: SecondViewControllerDelegate?

@IBAction func buttonPressed(_ sender: UISwitch) {
delegate?.settingsUpdated(light: sender.isOn)
}

@IBAction func backFromSettings(_ sender: AnyObject) {
dismiss(animated: true, completion: nil)
}

}

关于ios - 在弹出 segue 为 'dismissed' 后刷新父 View 上的 IBOutlet 外观,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41108416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com