将数组传递给另一个VC(Swift)

时间:2017-10-08 13:04:28

标签: ios swift

我有 ViewControler.swift (主要)和 ViewControllerHistory.swift (对于历史记录)。

如何在按下按钮(=)后将历史记录存储在VC(历史记录)中。

我有代码将值存储到数组中。

如何将此数组发送到 ViewControllerHistory.swift (历史记录)

@IBAction func EqualSave(_ sender: UIButton) {
    let result = "\(firstOperand)\(equalitySignPressed)\(secondOperand)="
    ArrayWithResults.append(result as AnyObject)
}

VC (for history)

Screen Main VC

1 个答案:

答案 0 :(得分:2)

如果您正在使用故事板,通常您会使用segue从一个视图控制器链接到另一个视图控制器。在这种情况下,prepareForSegue是将信息从一个视图控制器传递到另一个视图控制器的常用位置。

您需要在目标视图控制器中创建一个属性以接收该数组。

如果您将自定义类型array的属性YourArrayType添加到ViewControllerHistory,则该类的第一部分可能如下所示:

class ViewControllerHistory: UIViewController {
   var array: YourArrayType 
}

然后第一个视图控制器中的代码可能如下所示:

func prepare(for segue: UIStoryboardSegue, sender: Any?) {
   guard let destination = segue.destination as? ViewControllerHistory else 
   { 
      return 
   }
   destination.array = arrayWithResults
}

几点说明:

不要使用AnyObject类型的数组。 Swift支持包含特定类型对象的数组。您应该优先选择特定类型的数组而不是AnyObject

数组

变量名称应以小写字母开头。类名和类型应以大写字母开头。因此,ArrayWithResults应该是arrayWithResults

如果您直接调用ArrayWithResults视图控制器而不是segue,则可以使用instantiateViewController(withIdentifier:)创建视图控制器,设置属性,然后显示或推送它。 / p>