我正在使用UserDefaults来存储和检索我的数据,但是我不知道为什么当我执行展开segue时,我的userdefaults数据不能传递到下一个视图控制器,但是如果我执行常规的push segue,则我的userdefaults数据可以可以在下一个viewcontroller中看到。
附注:只有self.performSegue(withIdentifier: "unwindSegue", sender: nil)
是unwindSegue。
FirstViewController
@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)
}
SecondViewController
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) {
}
最佳答案
@Kinja请参考此URL以使用unse segue
点击这里:-Perform action when segue is closed
关于ios - unwindSegue无法传递数据(Swift-Xcode),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48519844/