gpt4 book ai didi

ios - prepareForSegue 未打开新 View

转载 作者:行者123 更新时间:2023-11-28 07:10:17 25 4
gpt4 key购买 nike

我有一个被调用的 View Controller 。它有一些检查,如果不满足,就不需要显示这个 View Controller ,我的应用程序中的下一个 View Controller 将被调用。这部分不起作用。

我有以下 IBAction:

    @IBAction func nextBtnPressed(sender: UIButton!) {
if GlobalVars.diceRollFirst == true {
performSegueWithIdentifier("showCombatOutcomeFromRearSupport", sender: self)
}
if GlobalVars.diceRollFirst == false {
performSegueWithIdentifier("showDiceRollFromRearSupport", sender: self)
}
}

哪个工作正常。

但是在我的 viewDidLoad() 中,我有以下代码:经过多次检查后,在 viewDidLoad 中更早地设置了 rearsupportfound。它最初为 false,如果满足任何检查则设置为 true。

        if !rearsupportfound {
println("rearsupportfound is: \(rearsupportfound)")

if GlobalVars.diceRollFirst == true {
performSegueWithIdentifier("showCombatOutcomeFromRearSupport", sender: self)
}
if GlobalVars.diceRollFirst == false {
performSegueWithIdentifier("showDiceRollFromRearSupport", sender: self)
}
}

这段代码什么都不做。我的意思是它确实得到了这段代码:

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
// Get the new view controller using segue.destinationViewController.
// Pass the selected object to the new view controller.
if segue.identifier == "showCombatOutcomeFromRearSupport" {
println("segue: showCombatOutcomeFromRearSupport sender: \(sender)")
let vc = segue.destinationViewController as CombatOutcomeViewController
vc.army1 = army1
vc.army2 = army2
}
if segue.identifier == "showDiceRollFromRearSupport" {
println("segue: showDiceRollFromRearSupport")
let vc = segue.destinationViewController as DiceRollViewController
vc.army1 = army1
vc.army2 = army2
}
}

我得到了 println 条目,但是请求的 View Controller 从未出现,而当前 View Controller 出现了。按下按钮时,相同的 perpareForSegue 可以完美运行。

知道为什么吗?

我意识到我可能应该在到达这里之前检查是否显示这个 View Controller 。我试图避免两次编写代码,因为 View 中显示的数据隐藏或显示了某些标签和按钮。我还没有找到解决这个问题的好方法,所以由于我已经编写了这些检查,所以我试图根据值绕过 View Controller 本身。任何人的想法?谢谢。

最佳答案

您的代码无法正常工作,因为您是从 viewDidLoad() 中调用它的。您需要从 viewDidAppear() 调用它 - 请参阅 this question for more details .

就您的代码重复问题而言,我会尝试从您的 View Controller 中删除所有游戏逻辑。拥有一个更大、更高级别的对象来维护游戏状态,并决定在任何给定时刻/场景中适用哪些 View Controller 。然后这个对象可以将适当的 segue 标识符交给 View Controller 。这样 View Controller 就不需要知道骰子或战斗或后方支持。

关于ios - prepareForSegue 未打开新 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28665054/

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