gpt4 book ai didi

ios - UITabBarControllerDelegate 中的变量不更新

转载 作者:行者123 更新时间:2023-11-28 14:31:22 24 4
gpt4 key购买 nike

这是我正在尝试做的事情:

Menu view Compressors view

当用户单击“压缩机”按钮时,它会显示一个 ScrollView ,其中包含压缩机(或其他)的详细信息。要返回菜单,用户单击“更多”选项卡栏项。

我设置了一个变量 first 来存储用户第一次点击“更多”项目时的信息。

class MoreVC: UIViewController {

var first : Bool = true

@IBOutlet weak var scrollView: UIScrollView!

override func viewDidLoad() {
super.viewDidLoad()

scrollView.isHidden = true

}


open func hideEverything(_ bool : Bool)
{
print(bool)
if bool == true
{
// First time user taps More - nothing happens
return
}
print("hideEverything()")

}

@IBAction func compressorsButton(_ sender: Any) {
scrollView.isHidden = false
print(first)
}

override func viewDidAppear(_ animated: Bool) {
print("-> \(self.title!)")
first = false
}

override func viewDidDisappear(_ animated: Bool) {
scrollView.isHidden = true
first = true
}

}

然后我在不同的文件中有标签栏委托(delegate):

class myTabBarController: UITabBarController, UITabBarControllerDelegate
{
override func viewDidLoad() {
self.delegate = self
}



func tabBarController(_ tabBarController: UITabBarController, didSelect selectedViewController: UIViewController) {
if selectedViewController is MoreVC
{
let more = MoreVC()
print("more.first = \(more.first)")
if more.first == false
{
more.scrollView.isHidden = true
}
}
}
}

因此,当我点击压缩器按钮时, View 会显示,当我切换选项卡时, View 会隐藏。但是当 scrollView 启动并且我按下“更多”时,它不会触发 more.scrollView.isHidden = true 因为它检测到 first = true,它不是!它被设置为 false(应该如此),但我仍然在那里得到 true。我认为我需要做的是以某种方式更新 myTabBarController,但我不知道如何做。

请帮忙,任何关于正在发生的事情的提示都将不胜感激!也感谢您阅读到这里,希望您能理解我的问题。

从 future 的我编辑:

通过我的应用程序使用导航 Controller 可以更自然地解决这个问题(无论如何我最终还是这样做了)。乔的回答是正确的,但如果有人遇到和我一样的问题,还有第二种方法。

最佳答案

由于您正在更新新创建的 MoreVC 上的 bool 值,因此现有的根本不会改变。

代替:

if selectedViewController is MoreVC

更新为:

if let more = selectedViewController as? MoreVC

然后删除创建全新 MoreVC 的行。

关于ios - UITabBarControllerDelegate 中的变量不更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51225030/

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