我有两个视图控制器和两个视图.在我的第一个视图中,我将变量'currentUser'设置为false.我需要能够在第二个视图控制器中将'currentUser'设置为true.
当尝试从第二个视图引用'currentUser'时,由于在第一个视图控制器中定义了'currentUser',因此它不会将其拾取.
如何使用segue传递变量?
我正在创建我的第一个简单的预算应用程序.基本上,我采取一些用户输入,如月收入和储蓄目标.然后他们点击"开始",该应用程序计算诸如他们的每日预算等内容.
我遇到了麻烦.在完成所有计算之后,我会显示"你每天可以花多少钱"(例如每天20美元),然后通过原始屏幕上的原始输入传递segue.
现在,在这个VC(UserInfoVC
)中我创建了一个按钮,让他们可以添加今天花了多少钱.因此,当他们点击这个"花钱"按钮时,我打开一个新的VC(AddSubtractMoney
),在那里我会提供一个计算器,在那里他们可以输入他们今天花了多少钱(即12美元)并点击提交.
我将他们的输入与每日预算相比较,以获得新的每日预算.
现在,我无法向后传递这个更新的数字,将其显示在标签"dailySpendingLimitLabel"上的前一个VC上.我知道segues不是向后传递数据的最佳方式.
我已经尝试过闭包,但我最终迷失在语法,协议和代理中(这是我的第二个月编码).
有没有一种简单的方法可以将这些数据传回上一个VC并填充前一个显示标签中的数据?
下面是代码.
第一个片段来自UserInfoVC,我在其中显示我最初输入的数据.第二个片段来自AddSubtractMoney
我放置计算器的类,并在函数内创建了一个对象"newestUpdate",允许我计算他们在计算器上输入的数字减去旧的每日预算.为了得到一个新的预算,我想向后呈现UserInfoVC
.
class UserInfoViewController : ViewController {
var userNamePassedOver : String?
var userDailyBudgetPassedOver : Double = 99.0
var userDailySavingsPassedOver : Double = 778.00
var userMonthlyEarningsPassedOver : Double?
var userDesiredSavingsPassedOver : Double?
var newAmountPassedBack : Double = 0.0
@IBOutlet weak var dailySavingsNumberLabel: UILabel!
@IBOutlet weak var userNameLabel: UILabel!
@IBOutlet weak var dailySpendingLimitLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
userNameLabel.text = userNamePassedOver
dailySpendingLimitLabel.text = String(format: "%.2f", userDailyBudgetPassedOver) …
Run Code Online (Sandbox Code Playgroud)