gpt4 book ai didi

ios - 使用标签栏从另一个 View 返回时如何重新加载 View Controller

转载 作者:可可西里 更新时间:2023-11-01 00:00:03 26 4
gpt4 key购买 nike

我有一个用户打开应用程序 (VC1) 时使用的通用 View 。使用选项卡栏 Controller ,我加载了另一个 View (VC2),可用于更新前一个 View 中可见的数据。当我返回 VC1(堆栈)时,它不会重新加载更新的数据。

我试过像这样在 viewWillAppear 中调用 viewDidLoad...

override func viewWillAppear(_ animated: Bool) {
viewDidLoad()
}

它可以工作,但它会加载仍在堆栈上的 VC1,并且用户可以看到更改(不好)。

我想关闭 VC1 会有所帮助,但我还没有找到如何在使用标签栏 Controller 时关闭 View 。

最佳答案

每次您的 View 出现时,请按照以下步骤处理您的 View 加载设置:
(VC1 = 第一个 View Controller )

  • 在您的 VC1 中创建一个新的函数/方法(名为 viewLoadSetup)并将所有代码从 viewDidLoad() 移动到 viewLoadSetup()
  • 现在,从 viewWillAppear

    调用 viewLoadSetup()
    class VC1: UIViewController {

    override func viewDidLoad() {
    super.viewDidLoad()
    // viewLoadSetup() you may call it from view did load also
    }

    override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(animated)
    viewLoadSetup()

    }


    func viewLoadSetup(){
    // setup view did load here
    }


    }


如果你想从 viewDidLoad 调用 viewLoadSetup 一次,当你的 View Controller 加载时,然后在每次从你的 viewWillAppear 调用之后,

class VC1: UIViewController {

var isLoadingViewController = false

override func viewDidLoad() {
super.viewDidLoad()
isLoadingViewController = true
viewLoadSetup()
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)

if isLoadingViewController {
isLoadingViewController = false
} else {
viewLoadSetup()
}
}


func viewLoadSetup(){
// setup view did load here
}


}

关于ios - 使用标签栏从另一个 View 返回时如何重新加载 View Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46577217/

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