gpt4 book ai didi

ios - 如何访问另一个类中的变量并更改其值

转载 作者:行者123 更新时间:2023-11-29 01:53:46 26 4
gpt4 key购买 nike

我是 Xcode 和 Swift 的新手,所以我不太了解它们是如何工作的,但我正在尝试制作一个弹出 View 。我希望在单击按钮时弹出一个小 View 。该 View 是一个 View 容器(我不知道这是否是最好的方法,所以如果不是,请告诉我更好的方法)并且它开始时是隐藏的,然后当我单击一个按钮时它就会变得可见。此 View 容器还有一个按钮,如果单击该按钮,它将使 View 再次隐藏。

代码如下:

import UIKit

class ViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

@IBOutlet weak var popUpView: UIView!

@IBAction func startButton(sender: UIButton) {
popUpView.hidden = false
}

}

import UIKit

class PopUpViewController: UIViewController {

override func viewDidLoad() {
super.viewDidLoad()

// Do any additional setup after loading the view.
}

override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}

override func prepareForSegue(segue:UIStoryboardSegue,
sender:AnyObject?)
{
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
}

@IBAction func backButton(sender: UIButton) {
ViewController().popUpView.hidden = true
}


}

当我运行该应用程序时它启动正常,因为开始按钮在那里,当我点击它时弹出窗口出现但是当我点击后退按钮时它给我一个错误,在控制台中显示

Interface Builder 文件中的未知类 MKMapView。 fatal error :在展开可选值时意外发现 nil

在第 31 行 ViewControler().popUpView.hidden = true

它说线程 1:EXC_BAD_INSTRUCTION(code=EXC_I386_INVOP, subcode=0x0)

谁能帮忙。谢谢

最佳答案

从 didPrepareForSeque 方法访问 popUpView 变量(当您转到另一个 View 时,会自动调用此方法)。问题是,如果您尝试将值设置为“很快”(意味着该按钮未在 View 上绘制),您将收到 nil 错误。这是一个小解决方法。您使用临时变量(tmpValue)来存储按钮的状态(是否隐藏),因此当 viewDidLoad 时,您的方法将读取该值并将按钮设置为隐藏状态。

在 ViewController 类中声明临时变量(必须是可选的):

var tmpValu:Bool?

然后在您的 PopUpViewController 类中从 backButton 操作中删除这一行:

ViewController().popUpView.hidden = true

相反,您将使用prepareForSegue方法,如下所示:

 override func prepareForSegue(segue: UIStoryboardSegue, sender:  AnyObject?) {
let destinationViewController = segue.destinationViewController as! ViewController
destinationViewController.tmpValu = true
}

现在,回到 viewDidLoad 中的 ViewController 类中添加以下代码:

override func viewDidLoad() {
super.viewDidLoad()
if let value = tmpValu {
popUpView.hidden = value
}
}

关于ios - 如何访问另一个类中的变量并更改其值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31107149/

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