Swift 单击导航栏上的“后退”按钮时,视图中的快速展开序列将消失

Swift 单击导航栏上的“后退”按钮时,视图中的快速展开序列将消失,swift,xcode,segue,Swift,Xcode,Segue,我正在尝试使用ViewWillEnglishe函数中的“展开序列”更改标签文本。每次调用ViewWillEnglishe函数时,它都会自动跳过我的展开序列行,而不是执行它 我使用的是Xcode 9和Swift 4.2 这是我的密码: 主页ViewController.swift import UIKit import Foundation struct globalConstant { let lostMessage : String = "You Lost!" let welco

我正在尝试使用ViewWillEnglishe函数中的“展开序列”更改标签文本。每次调用ViewWillEnglishe函数时,它都会自动跳过我的展开序列行,而不是执行它

我使用的是Xcode 9和Swift 4.2

这是我的密码:

主页ViewController.swift

import UIKit
import Foundation

struct globalConstant {
   let lostMessage : String = "You Lost!"
   let welcomeMessage : String = "WELCOME"
   let playAgainMessage : String = "Play again"
   let resumeMessage : String = "Resume"
   let pausedMessage : String = "Game is paused"
   let playMessage : String = "Play Game"
}


class ViewController: UIViewController {

var globalConst = globalConstant()
var labelValue : String!

//start Outlet
@IBOutlet weak var mainLabel: UILabel!
@IBOutlet weak var startButton: UIButton!
//end Outlet


@IBAction func unwindFromGame(_ sender: UIStoryboardSegue){

    let gameController = sender.source as? gamePageViewController
    if (gameController?.balVariables.balanceValue)! <= 0{
    mainLabel.text = gameController?.balVariables.abc
    }
    else  {
        mainLabel.text = self.globalConst.pausedMessage
    }
  }
}
import UIKit
import Foundation

struct balanceVariables {
//declare var start
var initBalance : Int = 500
var balanceValue : Int = 0
let abc = "abc"
//declare var end
}

class gamePageViewController: UIViewController {

//   override func addChild(_ gamePageViewController: UIViewController) {

//   }

@IBOutlet weak var valueHolder: UILabel!

var balVariables = balanceVariables()

override func viewDidLoad() {
    super.viewDidLoad()

    //run on page load

    if balVariables.balanceValue <= 0 {
        balVariables.balanceValue = balVariables.initBalance
        valueHolder.text = String(balVariables.balanceValue)
    }else{
        balVariables.balanceValue = balVariables.balanceValue
    }

}

override func viewWillDisappear(_ animated: Bool) {
    super.viewWillDisappear(animated)
    performSegue(withIdentifier: "unwindFromGame", sender: self)
}


//    override func didMove(toParent ViewController: UIViewController?){
 //       performSegue(withIdentifier: "unwindFromGame", sender: self)
//    }
导入UIKit
进口基金会
结构全局常数{
let lostMessage:String=“你输了!”
welcomeMessage:String=“欢迎”
让我们再播放一次消息:String=“再次播放”
让resumeMessage:String=“Resume”
let pausedMessage:String=“游戏暂停”
让我们玩消息:String=“玩游戏”
}
类ViewController:UIViewController{
var globalConst=globalConstant()
var labelValue:String!
//启动出口
@IBVAR主标签:UILabel!
@IBVAR启动按钮:UIButton!
//末端出口
@iAction func unwindFromGame(u发件人:UIStoryboardSegue){
让gameController=sender.source为?gamePageViewController

如果(gameController?.balVariables.balanceValue)!让我们使用委托模式而不是使用展开序列来尝试它

首先,为您的
gamePageViewController
创建代理协议,并声明用于发送
balanceVariables

protocol GamePageDelegate {
    func sendBalVariable(_ variable: balanceVariables)  
}
override func viewWillDisappear(_ animated: Bool) {
    delegate?.sendBalVariable(balVariables)
}
现在在
gamePageViewController

class gamePageViewController: UIViewController {

    var delegate: GamePageDelegate?
    ...
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "yourIdentifier" {
        let destinationVC = segue.destination as! gamePageViewController
        destinationVC.delegate = self
    }
}
然后将此委托实现到您的
ViewController
,并声明在委托上调用此方法时应该发生什么

class ViewController: UIViewController, GamePageDelegate {
    ...
    func sendBalVariable(_ variable: balanceVariables) {
        if variable.balanceValue <= 0 {
            mainLabel.text = variables.abc
        } else {
            mainLabel.text = self.globalConst.pausedMessage
        }
     /* mainLabel.text = variable.balanceValue <= 0 ? variables.abc : self.globalConst.pausedMessage */
    }
}
最后,在
gamePageViewController
中,当视图消失且ass参数传递
balVariables

protocol GamePageDelegate {
    func sendBalVariable(_ variable: balanceVariables)  
}
override func viewWillDisappear(_ animated: Bool) {
    delegate?.sendBalVariable(balVariables)
}

@StevenStuu不要使用任何展开序列,使用我写的。“yourIdentifier”是从
ViewController
到第二个序列的标识符“yourIdentifier”应该是什么be?destinationVC.delegate=self行给了我一个错误:“UIViewController”类型的值没有成员“delegate”你看到序列图像板中第一个和第二个VC之间的箭头了吗?点击它,你会看到右边的文本框,在那里写下你的标识符我在主VC和第二个VC之间的段中添加了一个标识符脚本中的VC,错误仍然存在。@StevenStuu,您是否覆盖了我描述的prepare方法?