我有 ViewControler.swift (主要)和 ViewControllerHistory.swift (对于历史记录)。
如何在按下按钮(=)后将历史记录存储在VC(历史记录)中。
我有代码将值存储到数组中。
如何将此数组发送到 ViewControllerHistory.swift (历史记录)
@IBAction func EqualSave(_ sender: UIButton) {
let result = "\(firstOperand)\(equalitySignPressed)\(secondOperand)="
ArrayWithResults.append(result as AnyObject)
}
答案 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>