- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我正在使用 UserDefaults 来存储和检索我的数据,但我不知道为什么当我执行展开转场时,我的 userdefaults 数据无法传递到下一个 View Controller ,但是如果我进行正常的推送转场,我的可以在下一个 View Controller 中看到 userdefaults 数据。
P.S: 只有 self.performSegue(withIdentifier: "unwindSegue", sender: nil)
是 unwindSegue。
第一 View Controller
@IBAction func Button1(_ sender: Any) {
var i: Int = 0
let randomNumber = arc4random_uniform(3) + 1
i = Int(randomNumber)
let alert = AlertController(title: "Congratualations", message: "You earned \(i) tokens!", preferredStyle: .alert)
alert.setTitleImage(UIImage(named: "token"))
// Add actions
alert.addAction(UIAlertAction(title: "Let's See!", style: UIAlertActionStyle.default, handler: { (action) in
var returnValue: Int = UserDefaults.standard.integer(forKey: "tokens")
returnValue = returnValue + i;
UserDefaults.standard.set(returnValue, forKey:"tokens")
self.performSegue(withIdentifier: "unwindSegue", sender: nil)
}))
if (returnValue != 30){
alert.addAction(UIAlertAction(title: "Continue Playing", style: UIAlertActionStyle.default, handler: { (action) in
var returnValue: Int = UserDefaults.standard.integer(forKey: "tokens")
returnValue = returnValue + i;
UserDefaults.standard.set(returnValue, forKey:"tokens")
self.performSegue(withIdentifier: "continue", sender: self)
}))
}
self.present(alert, animated: true, completion: nil)
}
第二 View Controller
import UIKit
class TokenController: UIViewController {
@IBOutlet var tokens: UILabel!
@IBOutlet var minus1: UIButton!
@IBOutlet var minus2: UIButton!
var returnValue: Int = UserDefaults.standard.integer(forKey: "tokens")
override func viewDidLoad() {
super.viewDidLoad()
tokens.text = "x\(returnValue)"
}
@IBAction func unwindSegue(_ sender: UIStoryboardSegue) {
}
最佳答案
因为当您推送一个新的 ViewController 时,它会加载到内存中并调用它的方法“ViewDidLoad”。当您执行 unwind segue 时,之前的 ViewController 已经在内存中,因此不会调用 viewDidLoad 和所有初始化,并且不会更新标签和所有图形。这不是问题,因为您可以通过变量 sender 访问 unwindSegue 实现中所需的所有数据。看这个例子:
func unwindToViewController(segue: UIStoryboardSegue) {
let vc_source = segue.source as! SecondViewController
self.myLabel.text! = vc_sorgente.myTextField.text!
}
关于ios - unwindSegue 无法传递数据(Swift - Xcode),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48519844/
我正在尝试创建一个从 DetailViewcontroller 到 SecondViewcontroller 的 Unwind segue。 我创建了一个像这样的 IBAction,它可以被 Segu
我正在使用 UserDefaults 来存储和检索我的数据,但我不知道为什么当我执行展开转场时,我的 userdefaults 数据无法传递到下一个 View Controller ,但是如果我进行正
我有一个结构与此类似的应用程序: 当我第一次运行该应用程序时,它将通过如下所示的 VC: LoadingVC > LoginVC > NavBarController_1 > VC1_1 > VC1_
创建了一个按钮,用于从第二个 ViewController 退出到前一个 ViewController。我在教程中读到这应该通过在 View Controller 中使用“EXIT”来实现。 (con
我目前正在学习如何使用 Swift 编程并制作了 3 个不同的页面; 页面 A、B 和 C。从 页面 A,我可以导航到 页面 B,从 页面 B,我可以转到任一 页面C 或 页面 A。当我转到 页面 C
我怎样才能成功地回到我的 Root View Controller ?我正在尝试使用按钮/导航栏项目返回到以前的 Controller 。我已经看到了使用类似...的解决方案 self.tabBarC
我是一名优秀的程序员,十分优秀!