gpt4 book ai didi

swift - 如何将变量从按钮操作函数拉到另一个 View Controller 类?

转载 作者:行者123 更新时间:2023-11-30 10:46:25 26 4
gpt4 key购买 nike

我有一段代码

@IBAction func postbutton(_ sender: UIButton) {
let ref: DatabaseReference = Database.database().reference()
let postvalue = ref.child("All Post").childByAutoId()
let postkeyvalue = postvalue.key!
postvalue.child("Post Content").setValue(postcontent.text)
postvalue.child("Post Author").setValue(currentuser)
var possstkeystring = postkeyvalue
}

我需要访问其他 View Controller 文件中的 possstkeystring。

我已经尝试在函数外部声明 possstkeystring 。当我这样做时,我的项目总是失败,因为它是空的。

我尝试过使用准备功能,但不起作用。

我尝试在类之外声明变量,但没有成功。它总是失败,因为字符串为空,并且由于它是 firebase 子字符串,因此它不能为空。

这是我试图将其插入的另一个文件代码块

self.ref.child("All Post").child(possstkeystring).child("Post Author").observe(DataEventType.value, with: { (snapshot) in
if let item = snapshot.value as? NSDictionary
{
self.authornamereference = item["Post Author"] as! String
}

请帮忙!谢谢:)

当我实际输入范围之外的变量或在静态变量中输入变量时,我收到此错误

由于未捕获的异常“InvalidPathValidation”而终止应用程序,原因:“(child:) 必须是非空字符串且不包含“.” '#' '$' '[' 或 ']''

最佳答案

您可以通过多种方式做到这一点,其中一种方法是使用NotificationCenter

使用通知中心:

首先,您需要在应用程序中的任意位置向Notification.Name 添加扩展名。喜欢

extension Notification.Name { static let mynotification = Notification.Name("mynotification") }

在另一个 View Controller viewDidLoad 方法中添加

NotificationCenter.default.addObserver(self, selector: #selector(yourMethod), name: NSNotification.Name.mynotification, object: nil)

然后在您的另一个 ViewController 中添加一个方法,该方法将在通知触发时调用

 func yourMethod(){
//// do something
}

现在,在您的 Click 事件方法中,甚至在应用程序的任何位置,您可以通过发送类似通知来调用 viewController 的方法

 NotificationCenter.default.post(name: NSNotification.Name.mynotification, object: nil)
  • 另一种简单的方法,如果您从存在单击事件的同一 View Controller 启动另一个 View Controller ,那么您必须拥有该 View Controller 的引用。那么你只需调用

    vc.yourMethod(params);
  • 关于swift - 如何将变量从按钮操作函数拉到另一个 View Controller 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55683051/

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