gpt4 book ai didi

swift - 当我第二次启动应用程序时标签消失

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

我有一个带有三个 Viewcontroller 的 main.storyboard。在第一个 viewcontroller 中有一个开始按钮,第二个 viewcontroller 有一个 perform.segue 方法。在第二个 View Controller 中有一个文本字段,它询问用户的姓名。

当用户输入他们的名字并单击继续按钮时,textfield.text(人名)通过 prepare(for segue) 方法放入第三个 View Controller 的标签中。当我第一次启动我的应用程序时会发生此过程。

当我第二次启动我的应用程序时,显示的 thirsViewcontroller 没有第一个和第二个 viewcontroller 的“欢迎程序”,但标签消失了。

第二个ViewController的代码

@IBAction func continueButton(_ sender: Any) {
animateButton()

if enterYourNameTextfield.text != "" {
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 0.8, execute: {
self.performSegue(withIdentifier: "thirdScreenSegue", sender: self)

}
)}
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let thirdController = segue.destination as! thirdViewController
thirdController.myString = "Hello \(enterYourNameTextfield.text!)! How are you today ?"

}

第三个Viewcontroller的代码

@IBOutlet weak var helloNameLabel: UILabel!
var myString = String()

AppDelegate.swift 文件代码

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool  {
let isFirst = UserDefaults.standard.bool(forKey: "isLaunched") // edited this after rmaddy's comment
var viewControllerWithIdentifier = "initialView"

if !isFirst {
UserDefaults.standard.set(true, forKey: "isLaunched")
viewControllerWithIdentifier = "firstView"
}
let mainStoryboard : UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
let initialViewController : UIViewController = mainStoryboard.instantiateViewController(withIdentifier: viewControllerWithIdentifier) as UIViewController
self.window = UIWindow(frame: UIScreen.main.bounds)
self.window?.rootViewController = initialViewController
self.window?.makeKeyAndVisible()
sleep(2)

return true
}

最佳答案

在 secondViewController 中,您需要保留用户名。您可以通过多种方式保留用户名,但对于您的用例,您可以将名称保存在用户默认值中,如下所示:

 override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let name = enterYourNameTextfield.text ?? ""
UserDefaults.standard.set(name, forKey: "name")
}

在您的 thirdViewController 的 viewDidLoad 方法中,您可以检索用户名,如下所示

override func viewDidLoad(){
let name = UserDefaults.standard.string(forKey: "name") ?? ""
myString = "Hello \(name)! How are you today ?"
}

关于swift - 当我第二次启动应用程序时标签消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57838163/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com