我试图通过使用委托协议和另一个init类文件将信息从一个swift文件传递到另一个视图控制器。当我调用我想要转移的变量时,我的问题就出现了,它显示为零。我希望能够在点击saveButton时将ageDescription从一个swift文件传递到另一个swift文件。我想知道我可以改变什么,以便可以调用变量。
第一视图控制器
@IBAction func ageChanged(sender: UISegmentedControl) {
switch age.selectedSegmentIndex {
case 0:
print("Under 18")
var ageDescription = "under 18"
let data = Data(ageData: ageDescription)
case 1:
print("Over 18")
var ageDescription = "over 18"
let data = Data(ageData: ageDescription)
case 2:
print("Strictly over 21")
var ageDescription = "strictly over 21"
let data = Data(ageData: ageDescription)
default:
print("IDK")
}
}
其他视图控制器
@IBAction func saveButtonTapped(sender: UIBarButtonItem) {
func getData(data: Data) {
print(data.ageData)
}
答案 0 :(得分:1)
在类中创建一个协议,您将在其中获取viewcontroller之上的数据,如此
protocol ageDescriptionDelegte {
func sendageDescriptiongetData(data: Data)
}
class ViewController: UIViewController {
weak var delegate: PassDateDelegte?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func saveButtonTapped(sender: AnyObject) {
self.delegate?.sendageDescriptiongetData(ageDescription)//pass your age description
}
}
在视图控制器中,您要访问的数据符合协议
extension ViewController2: ageDescriptionDelegte {
func sendageDescriptiongetData(data: Data) {
print(data)// this will give you the age description
}
}
答案 1 :(得分:0)
您可以使用prepareForSegue覆盖。
只需在另一个VC中创建一个变量,然后将其转换为并在覆盖中进行分配。
groups
您还需要将方法外的ageDescription变量声明为全局。