当前位置: 首页 > 知识库问答 >
问题:

在不同的viewcontrollers之间传递数据

后源
2023-03-14

我想把我的数据传递给其他的viewcontroller,但我做不到。我的密码在下面。ViewControllers的屏幕截图在这里。当用户写出他们的名字和密码时,我想传递另一个用户的数据,但他们之间还有一个viewcontroller。我认为这是一个问题,但我可以移除这个额外的视图控制器,所以我想了解如何才能把这些数据传递给其他的一个?

第一个viewcontroller的代码

import UIKit
import Firebase

class OdayaKatilVC: UIViewController {
        @IBOutlet weak var OdaAdiTextField: UITextField!
        @IBOutlet weak var OdaSifresiTextField: UITextField!
        
        override func prepare(for segue: UIStoryboardSegue, sender: Any?) { AKTARMAK İÇİN İF DÖNGÜSÜNE GİRMİYOR 26 MART CUMA
            print("gönderme işlemi başarılı olacak")
            if segue.identifier == "segue" {
                print("gönderme işlemi başarılı olacak2")
                let destinationController = segue.destination as! OdaBilgileriVC
                destinationController.odaAdiF = OdaAdiTextField.text!
                destinationController.odaSifreF = OdaSifresiTextField.text!
                print("gönderme işlemi başarılı")
            }
        } 
       
        override func viewDidLoad() {
            super.viewDidLoad()
            
            // Do any additional setup after loading the view.
        }`
     @IBAction func OdayaGecisYapButton(_ sender: Any) {
            
            let email = OdaAdiTextField.text ?? ""
            let pass = OdaSifresiTextField.text ?? ""
       if email.isEmpty {
                Common.showAlert(title: "Bir şey unuttun!", message: "Oda adını yazmayı unutmayın.", vc: self)
                return
            }
            
            if pass.isEmpty {
               Common.showAlert(title: "Bir şey unuttun!", message: "Oda şifresini yazmayı unutmayın.", vc: self)
                return
            }
            
            Auth.auth().signIn(withEmail: String("\(email)@question.com"), password: "\(pass)123456") { (result, error) in
                
                if error != nil {
                    _ = self.navigationController?.popViewController(animated: true)
                    
                    print(error?.localizedDescription as Any)
                    
                    let alert = UIAlertController(title: "Bir şeyler yanlış!", message: "Oda adı veya şifre hatalı.", preferredStyle: .alert)
    
                    alert.addAction(UIAlertAction(title: "Tamam", style: .default, handler: nil))
                   
    
                    self.present(alert, animated: true)
                    
                    return
     }else{
                 
                    print("Odaya başarılı şekilde giriş yapıldı.")
                }
            
            
            }
            
        }
    

第二个viewcontroller的代码

import UIKit
import Firebase

class OdaBilgileriVC: UIViewController {

    @IBOutlet weak var odaAdilbl: UILabel!
    @IBOutlet weak var odaSifresilbl: UILabel!
    
    var odaAdiF = String()   
    var odaSifreF = String()
    
    override func viewDidLoad() {
        super.viewDidLoad()

        odaAdilbl.text = odaAdiF
        odaSifresilbl.text = odaSifreF 
        // Do any additional setup after loading the view.
    }

当我运行代码时,我看不到数据。第二个viewcontrollers上的标签为空。

共有2个答案

何建中
2023-03-14

有许多方法可以在ViewControllers之间传递数据。请参阅以下链接

https://stackoverflow.com/A/31934786/11662833

https://learnappmaking.com/pass-data-between-view-controllers-swift-how-to/

邰钟展
2023-03-14

你只需要点击故事板中的segue和添加segue标识符名称从侧板,我有附上的图片供参考

 类似资料:
  • 我有两个viewController,分别命名为viewController和我想获取数据并使用委托将其发送到secondViewController。另外,我在secondViewController中有一个数组,当每个数据来自VC1时,它必须存储数据,如; segue1,第一个数据来了->arrayElements{firstData}segue2,第二个数据来了->arrayElements

  • 我正试图将数据从第一个ViewController发送到第二个ViewController。 然后我尝试将它发送到我的另一个ViewController: 致命错误:在展开可选值时意外发现nil 我的第二个视图控制器:

  • 我的应用程序包含5个ViewControllers的TabBar控制器可以单击每个viewcontrollers中的一个按钮,该按钮将弹出另一个视图,用户可以在其中选择一个设置。按钮(被点击)应该根据每个ViewController中选择的设置来改变其背景。因此,如果用户点击VC1中的按钮并选择设置,该信息应该传播到所有其他VC中,以便按钮具有相同的背景。 我正在使用故事板,我知道这很容易在2VC

  • 我知道如何在直接依赖的ViewController之间建立“正常”委派。所以如果我说,我必须从一个视图发送一个消息到它上面的一个,我知道怎么做。但是,如果两者之间有更多的ViewControllers,我如何设置委托呢? 假设我有一个根据方案的设置: ViewController1->ViewController2->ViewController3(通过ButtonPressed)(通过Butto

  • 问题内容: 我在页面上有一个组件的两个实例(搜索字段),在它们之间有另一个组件(进行服务器调用的按钮),例如: 我要做的只是将一个未修改的参数从CardSearch字段传递到RunOnServer按钮,但是如果简单的话,我该死的。据此,我可以使用this.state.var作为道具,但是这样做可以在编译代码时给我’undefined.state.var’。React的官方文档并不出色。他们只是告诉

  • 我正在创建一个用户设置帐户使用故事板的5个步骤。每个步骤都有一个ViewController:1:)输入姓名、联系人等,2:)导入照片,3:)输入等4:)更多输入5:)确认页面,如果用户点击“确认”->获取所有输入并上传解析。 我在网上搜索时得到的唯一解决方案是创建一个函数“Prepare for Segue”并传递信息...但对我来说,这没有任何意义: 如果我有1000个viewcontroll