【发布时间】:2015-04-24 06:16:23
【问题描述】:
我有一个被调用的视图控制器。它有一些检查,如果不满足,则不需要显示此视图控制器,并且将调用我的应用程序中的下一个视图控制器。这部分不起作用。
我有以下 IBAction:
@IBAction func nextBtnPressed(sender: UIButton!) {
if GlobalVars.diceRollFirst == true {
performSegueWithIdentifier("showCombatOutcomeFromRearSupport", sender: self)
}
if GlobalVars.diceRollFirst == false {
performSegueWithIdentifier("showDiceRollFromRearSupport", sender: self)
}
}
哪个工作正常。
但是,在我的 viewDidLoad() 中,我有以下代码: 在经过多次检查后,在 viewDidLoad 中较早地设置了 backsupportfound。它最初为假,如果满足任何检查,则设置为真。
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 条目,但是请求的视图控制器永远不会出现,而当前的视图控制器是。按下按钮时,相同的 perpareForSegue 可以完美运行。
任何想法是为什么?
我意识到在我到达这里之前我可能应该检查是否呈现这个视图控制器。我试图避免两次编写代码,因为视图中显示的数据隐藏或显示的某些标签和按钮。我还没有看到解决这个问题的好方法,所以因为我已经编写了这些检查,所以我试图绕过视图控制器本身,具体取决于值。有人想吗?谢谢。
【问题讨论】:
标签: ios swift segue uistoryboardsegue