gpt4 book ai didi

swift - 快速更改其他 View 中的标签

转载 作者:搜寻专家 更新时间:2023-11-01 05:43:13 25 4
gpt4 key购买 nike

我在 Swift 的第二个 viewController 中有一个标签,我想在我的第一个 ViewController 之间更改它。我尝试使用 prepareForSegue: 也使用 ChildView 和 ParentView 并从 parentView 开始访问标签 .. 但我收到错误..做这个的正确形式是什么?

尝试声明secondVIew:

 class ViewController: UIViewController {
var v = View2Controller()
@IBAction func but(sender : AnyObject) {

v.label2.text = "newText" //Here get the error EXC_BAD_INSTRUCTION
}
...


class View2Controller: UIViewController {
@IBOutlet var label2 : UILabel

谢谢!

最佳答案

您提供的代码越多,就越容易获得答案。

在您的例子中,您正在初始化一个新的 View2Controller。由于 label2 是一个 IBOutlet,它需要来自 nib 文件的数据。由于它没有获得任何此类数据,label2 将为 nil,因此您会遇到 EXC_BAD_INSTRUCTION 崩溃。

您可以访问导航 Controller 的 Root View Controller ,因为导航 Controller 的特殊之处在于它们有自己的堆栈并维护自己的 View 层次结构。这就是为什么你必须在导航 Controller 中推送和弹出 View Controller 。这也允许子 Controller 维护对其父 Controller 的引用。

适合您情况的正确解决方案是使用协议(protocol)。否则,为 View2Controller 提供一个属性并引用 ViewController,然后通过该属性对 ViewController 进行更改。

关于swift - 快速更改其他 View 中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25046635/

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