Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何从一个视图控制器设置结构变量数据并从另一个视图控制器获取相同的值_Ios_Swift_Xcode - Fatal编程技术网

Ios 如何从一个视图控制器设置结构变量数据并从另一个视图控制器获取相同的值

Ios 如何从一个视图控制器设置结构变量数据并从另一个视图控制器获取相同的值,ios,swift,xcode,Ios,Swift,Xcode,我是斯威夫特的新手。我已经用一个变量创建了一个struct类。我试图从我的第一个视图控制器中设置该结构变量的值,但当我试图从第二个视图控制器中获得相同的值时,它的值为零 下面是我的一些代码 //结构类 import Foundation import UIKit struct CompanyData { var companyName : String? mutating func setData(name : String) { companyNa

我是斯威夫特的新手。我已经用一个变量创建了一个struct类。我试图从我的第一个视图控制器中设置该结构变量的值,但当我试图从第二个视图控制器中获得相同的值时,它的值为零

下面是我的一些代码

//结构类

import Foundation
import UIKit

struct CompanyData {
    var companyName : String?


    mutating func setData(name : String)
    {
        companyName = name
    }

}
//第一视图控制器

import UIKit

class SelfCompanyNameView: UIViewController {

@IBOutlet weak var companyNameTxt: TextfieldDesign!
var company = CompanyData()
var comName = ""

override func viewDidLoad() {
    super.viewDidLoad()

}


@IBAction func compnyBtnPress(_ sender: Any)
{
    if companyNameTxt.text?.count == 0
    {
        Alert.showAlert(on: self, with: "Required", message: "Please enter your company name")
    }
    else
    {
        comName = companyNameTxt.text!
        company.setData(name: comName)
        print("\(comName)===\(company.companyName!)")


        let vc = storyboard?.instantiateViewController(withIdentifier: "SelfAddressView")  as! SelfAddressView
        navigationController?.pushViewController(vc, animated: true)
    }
   }
 }
import UIKit

class SelfAddressView: UIViewController {

var company = CompanyData()
override func viewDidLoad() {
    super.viewDidLoad()

    print(company.companyName)
 }
}
let vc = storyboard?.instantiateViewController(withIdentifier: "SelfAddressView")  as! SelfAddressView
vc.company = company
navigationController?.pushViewController(vc, animated: true)
import UIKit

class SelfAddressView: UIViewController {

var company: CompanyData!
override func viewDidLoad() {
    super.viewDidLoad()

    print(company.companyName)
 }
}
//第二视图控制器

import UIKit

class SelfCompanyNameView: UIViewController {

@IBOutlet weak var companyNameTxt: TextfieldDesign!
var company = CompanyData()
var comName = ""

override func viewDidLoad() {
    super.viewDidLoad()

}


@IBAction func compnyBtnPress(_ sender: Any)
{
    if companyNameTxt.text?.count == 0
    {
        Alert.showAlert(on: self, with: "Required", message: "Please enter your company name")
    }
    else
    {
        comName = companyNameTxt.text!
        company.setData(name: comName)
        print("\(comName)===\(company.companyName!)")


        let vc = storyboard?.instantiateViewController(withIdentifier: "SelfAddressView")  as! SelfAddressView
        navigationController?.pushViewController(vc, animated: true)
    }
   }
 }
import UIKit

class SelfAddressView: UIViewController {

var company = CompanyData()
override func viewDidLoad() {
    super.viewDidLoad()

    print(company.companyName)
 }
}
let vc = storyboard?.instantiateViewController(withIdentifier: "SelfAddressView")  as! SelfAddressView
vc.company = company
navigationController?.pushViewController(vc, animated: true)
import UIKit

class SelfAddressView: UIViewController {

var company: CompanyData!
override func viewDidLoad() {
    super.viewDidLoad()

    print(company.companyName)
 }
}

您需要像下面的代码一样将模型传递给secondView控制器

//第一视图控制器

import UIKit

class SelfCompanyNameView: UIViewController {

@IBOutlet weak var companyNameTxt: TextfieldDesign!
var company = CompanyData()
var comName = ""

override func viewDidLoad() {
    super.viewDidLoad()

}


@IBAction func compnyBtnPress(_ sender: Any)
{
    if companyNameTxt.text?.count == 0
    {
        Alert.showAlert(on: self, with: "Required", message: "Please enter your company name")
    }
    else
    {
        comName = companyNameTxt.text!
        company.setData(name: comName)
        print("\(comName)===\(company.companyName!)")


        let vc = storyboard?.instantiateViewController(withIdentifier: "SelfAddressView")  as! SelfAddressView
        navigationController?.pushViewController(vc, animated: true)
    }
   }
 }
import UIKit

class SelfAddressView: UIViewController {

var company = CompanyData()
override func viewDidLoad() {
    super.viewDidLoad()

    print(company.companyName)
 }
}
let vc = storyboard?.instantiateViewController(withIdentifier: "SelfAddressView")  as! SelfAddressView
vc.company = company
navigationController?.pushViewController(vc, animated: true)
import UIKit

class SelfAddressView: UIViewController {

var company: CompanyData!
override func viewDidLoad() {
    super.viewDidLoad()

    print(company.companyName)
 }
}
//第二视图控制器

import UIKit

class SelfCompanyNameView: UIViewController {

@IBOutlet weak var companyNameTxt: TextfieldDesign!
var company = CompanyData()
var comName = ""

override func viewDidLoad() {
    super.viewDidLoad()

}


@IBAction func compnyBtnPress(_ sender: Any)
{
    if companyNameTxt.text?.count == 0
    {
        Alert.showAlert(on: self, with: "Required", message: "Please enter your company name")
    }
    else
    {
        comName = companyNameTxt.text!
        company.setData(name: comName)
        print("\(comName)===\(company.companyName!)")


        let vc = storyboard?.instantiateViewController(withIdentifier: "SelfAddressView")  as! SelfAddressView
        navigationController?.pushViewController(vc, animated: true)
    }
   }
 }
import UIKit

class SelfAddressView: UIViewController {

var company = CompanyData()
override func viewDidLoad() {
    super.viewDidLoad()

    print(company.companyName)
 }
}
let vc = storyboard?.instantiateViewController(withIdentifier: "SelfAddressView")  as! SelfAddressView
vc.company = company
navigationController?.pushViewController(vc, animated: true)
import UIKit

class SelfAddressView: UIViewController {

var company: CompanyData!
override func viewDidLoad() {
    super.viewDidLoad()

    print(company.companyName)
 }
}

您需要像下面的代码一样将模型传递给secondView控制器

//第一视图控制器

import UIKit

class SelfCompanyNameView: UIViewController {

@IBOutlet weak var companyNameTxt: TextfieldDesign!
var company = CompanyData()
var comName = ""

override func viewDidLoad() {
    super.viewDidLoad()

}


@IBAction func compnyBtnPress(_ sender: Any)
{
    if companyNameTxt.text?.count == 0
    {
        Alert.showAlert(on: self, with: "Required", message: "Please enter your company name")
    }
    else
    {
        comName = companyNameTxt.text!
        company.setData(name: comName)
        print("\(comName)===\(company.companyName!)")


        let vc = storyboard?.instantiateViewController(withIdentifier: "SelfAddressView")  as! SelfAddressView
        navigationController?.pushViewController(vc, animated: true)
    }
   }
 }
import UIKit

class SelfAddressView: UIViewController {

var company = CompanyData()
override func viewDidLoad() {
    super.viewDidLoad()

    print(company.companyName)
 }
}
let vc = storyboard?.instantiateViewController(withIdentifier: "SelfAddressView")  as! SelfAddressView
vc.company = company
navigationController?.pushViewController(vc, animated: true)
import UIKit

class SelfAddressView: UIViewController {

var company: CompanyData!
override func viewDidLoad() {
    super.viewDidLoad()

    print(company.companyName)
 }
}
//第二视图控制器

import UIKit

class SelfCompanyNameView: UIViewController {

@IBOutlet weak var companyNameTxt: TextfieldDesign!
var company = CompanyData()
var comName = ""

override func viewDidLoad() {
    super.viewDidLoad()

}


@IBAction func compnyBtnPress(_ sender: Any)
{
    if companyNameTxt.text?.count == 0
    {
        Alert.showAlert(on: self, with: "Required", message: "Please enter your company name")
    }
    else
    {
        comName = companyNameTxt.text!
        company.setData(name: comName)
        print("\(comName)===\(company.companyName!)")


        let vc = storyboard?.instantiateViewController(withIdentifier: "SelfAddressView")  as! SelfAddressView
        navigationController?.pushViewController(vc, animated: true)
    }
   }
 }
import UIKit

class SelfAddressView: UIViewController {

var company = CompanyData()
override func viewDidLoad() {
    super.viewDidLoad()

    print(company.companyName)
 }
}
let vc = storyboard?.instantiateViewController(withIdentifier: "SelfAddressView")  as! SelfAddressView
vc.company = company
navigationController?.pushViewController(vc, animated: true)
import UIKit

class SelfAddressView: UIViewController {

var company: CompanyData!
override func viewDidLoad() {
    super.viewDidLoad()

    print(company.companyName)
 }
}

您需要将静态变量声明为结构的共享实例。在设定和获取价值时使用它。 例如

设置该值时,请将其用作:

company.shared.setData(name: comName)
print(company.shared.companyName)
在获取值的同时,将其用作:

company.shared.setData(name: comName)
print(company.shared.companyName)

您需要将静态变量声明为结构的共享实例。在设定和获取价值时使用它。 例如

设置该值时,请将其用作:

company.shared.setData(name: comName)
print(company.shared.companyName)
在获取值的同时,将其用作:

company.shared.setData(name: comName)
print(company.shared.companyName)

我宁愿使用协议和委托人。这是一个很好的教程,可以帮助您理解这个概念

我更愿意使用协议和委托器。这里有一个很好的教程可以帮助你理解这个概念