gpt4 book ai didi

ios - 如何将标签结果保留在 secondViewController 上?

转载 作者:行者123 更新时间:2023-11-28 13:55:07 26 4
gpt4 key购买 nike

我目前正在开发一个应用程序,但遇到以下问题:我有我的主 VC (ReceiveInputVC),在我输入一个输入后,它会转到第二个 VC (TimeLeftVC ) 并使用从 mainVC 接收到的输入结果更新其所有标签。我的问题是:在单击箭头返回 mainVC 之后,或者即使我关闭了应用程序,当我从 mainVC 单击箭头转到 secondVC 时,我如何才能让我的标签显示与以前相同的值用户关闭应用程序或返回主屏幕?

import UIKit

extension UIViewController {

func hideKeyboard() {
let tap: UITapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(dismissKeyboard))
view.addGestureRecognizer(tap)
}

@objc func dismissKeyboard() {
view.endEditing(true)
}

}

class ReceiveInputVC: UIViewController {

@IBOutlet weak var hourglassButton: UIButton!

@IBOutlet weak var whatIsYourAgeField: UITextField!
@IBOutlet weak var ageToDieField: UITextField!

override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
self.hideKeyboard()
}

@IBAction func arrowBtnPressed(_ sender: Any) {
// When pressed should show go to TimeLeftVC and show last result from the first time user entered the inputs, if nothing has been typed yet and no data has been saved an alert should pop up asking the user to enter an input on both fields
}

@IBAction func hourglassBtnPressed(_ sender: Any) {

let checkAgeField: Int? = Int(whatIsYourAgeField.text!)
let checkDyingAgeField: Int? = Int(ageToDieField.text!)

if (whatIsYourAgeField.text == "" || ageToDieField.text == "") || (whatIsYourAgeField.text == "" && ageToDieField.text == "") {
alert(message: "You must enter an input on both fields")
} else if checkAgeField! < 1 || checkDyingAgeField! > 100 {
alert(message: "You must enter an age higher than 1 and a dying age lower than 100")
} else if (checkAgeField! > checkDyingAgeField!) || (checkAgeField! == checkDyingAgeField!) {
alert(message: "You must enter an age lower than a dying age")
} else {
performSegue(withIdentifier: "goToSecondScreen", sender: self)
}

}

func alert(message: String, title: String = "Alert") {
let alert = UIAlertController(title: title, message: message, preferredStyle: .alert)
alert.addAction(UIAlertAction(title: "Try Again", style: UIAlertAction.Style.default, handler: nil))
self.present(alert, animated: true, completion: nil)
}

// Passing the data entered from ReceiveInputVC to TimeLeftVC
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "goToSecondScreen" {

let destinationTimeLeftVC = segue.destination as! TimeLeftVC

destinationTimeLeftVC.ageReceived = whatIsYourAgeField.text
destinationTimeLeftVC.ageToDieReceived = ageToDieField.text
}

}

}

import CircleProgressBar

class TimeLeftVC: UIViewController {

var ageReceived: String! // receive whatIsYourAgeField data from ReceiveInputVC
var ageToDieReceived: String! // receive ageToDieField data from ReceiveInputVC

@IBOutlet weak var yearsLeftLabel: UILabel!
@IBOutlet weak var daysLeftLabel: UILabel!
@IBOutlet weak var hoursLeftLabel: UILabel!

@IBOutlet weak var progressBar: CircleProgressBar!

override func viewDidLoad() {
super.viewDidLoad()
createResults()
}

func createResults() {

if let userAge = Int(ageReceived), let dyingAge = Int(ageToDieReceived) {

let yearsLeft = dyingAge - userAge
let daysLeft = yearsLeft * 365
let hoursLeft = daysLeft * 24

// Update UI
yearsLeftLabel.text = "\(yearsLeft)"
daysLeftLabel.text = "\(daysLeft)"
hoursLeftLabel.text = "\(hoursLeft)"

let percentage = (CGFloat(yearsLeft) / CGFloat(dyingAge)) * 100
let formatted = String(format: "%.1f", percentage)

// Update Circle Progress Bar
progressBar.setHintTextGenerationBlock { (progress) -> String? in
return String.init(format: "\(formatted)%%", arguments: [progress])
}

progressBar.setProgress(percentage/100, animated: true, duration: 4.0)

}

}

GitHub 上的项目:https://github.com/mvvieira95/Time-Life.git

最佳答案

您可以使用 Coredata 或其他数据库或用户默认值

用户默认实现:

 @IBAction func arrowBtnPressed(_ sender: Any) {
UserDefaults.standard.set("your input values from text field or ...", forKey: "key")
}

在第二个 View Controller 中获取它

 UserDefaults.standard.string(forKey: "key")

关于ios - 如何将标签结果保留在 secondViewController 上?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53984298/

26 4 0