ios - 从 VC1 向 VC2 传递值

标签 ios swift firebase tableviewcell

我现在正在将值从 VC1 传递到 VC2

func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {

    if indexPath.row == 0 {

        FIRDatabase.database().reference().child("Menus/Day1").observeSingleEvent(of: .value, with: {(snap) in

            if let snapDict = snap.value as? Dictionary <String, AnyObject>{

                let date = snapDict["mealPic"] as! String

                let OrderInfo = DataService.ds.REF_ORDER
                let USERUID = FIRAuth.auth()!.currentUser!.uid
                let userinfo = OrderInfo.child(date).child(USERUID).child("data")

                self.valueToPass = date
            }
        })
    }

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {

    if(segue.identifier == "ToVari") {
        var Vari = segue.destination as! Variation
        Vari.passedValue = valueToPass
    }
}

和我的 VC2 viewDidLoad:-

var passedValue : String! 

override func viewDidLoad() {
    super.viewDidLoad()

    MEALDATE.text = passedValue


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

它确实有效,但奇怪的是 VC2 中的“passedValue”一开始没有显示(我选择 VC1 中的单元格以执行到 VC2 的 Segue)

我不得不返回到 VC1,然后再次将单元格点击到 VC2,让“passedValue”显示它应该在那里的内容。

有人知道为什么会这样吗?

最佳答案

这可能是由于对 Firebase 的调用是异步的(并非 100% 确定)。此外,您正在从 Storyboard 中调用 segue,所以我建议如下:

  • 从 Storyboard中删除 segue
  • 在 Firebase 的回复中,添加以下内容:self.performSegueWithIdentifier("ToVari", sender: self)

你应该没问题。

关于ios - 从 VC1 向 VC2 传递值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40239710/

相关文章:

javascript - React Native 未处理的 JS 异常 : TypeError on new iOS project

Swift:类型不符合协议(protocol)

swift - NSWindow 在 contentView 中缩放绘图

reactjs - Firebase - 始终检查用户是否登录的最佳方法?

iOS Unity Firebase Messenger Xcode 编译错误 : FIRDynamicLinks

iOS Singleton、Delegate 和 SocketIO 之间出了点问题

ios - 使用 addObserverForName :usingBlock 时移除 Observer

swift - Realm Swift 中的列表列表

firebase - Firestore 安全规则 - 权限被拒绝

ios - 火力地堡 (iOS) : Delete User created from Facebook