gpt4 book ai didi

ios - 在 unwind 中强制 segue

转载 作者:行者123 更新时间:2023-11-28 05:38:53 24 4
gpt4 key购买 nike

我有一个 StoryboardA,其中包含一个按钮列表和一个计数器,其中包含我拥有的按钮数量。每次我按下这些按钮中的一个时,计数器就会减少,然后你就会转到 storyboard B。在 storyboard B 中有一个 return 按钮和 unwindstoryboard A

我想做的是,当counter达到0时,转至storyboard C

我尝试的是,在 storyboard A 的 Controller 中,我添加了:

@IBAction func unwindToStoryboardA(segue: UIStoryboardSegue) {
if let sourceViewController = segue.source as? StoryboardBController {
currentButtonPressed?.isHidden = true
counter -= 1
// If there are no more buttons, segue to storyboard C
if counter == 0 {
performSegue(withIdentifier: "StoryboardCsegue", sender: self)
}
}
}

但是,实际发生的情况是,它转到storyboard C,但立即返回到storyboard A。这是为什么?

还有其他方法可以完成我想做的事情吗?

最佳答案

当您到达 unwindToStoryboardA 时,segue 尚未完成,因此您无法从那里执行下一个 segue。

相反,设置一个属性 whereToNext 来保存标识符,然后在 viewDidAppear 中使用它来转到下一个 ViewController:

var whereToNext: String? 

@IBAction func unwindToStoryboardA(segue: UIStoryboardSegue) {
if let sourceViewController = segue.source as? StoryboardBController {
currentButtonPressed?.isHidden = true
counter -= 1
// If there are no more buttons, segue to storyboard C
if counter == 0 {
// set whereToNext, the actual segue is now in viewDidAppear()
whereToNext = "StoryboardCsegue"
}
}
}

override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)

// unwrap whereToNext if there is a value
if let identifier = whereToNext {
// set it back to nil so we don't go there more than once
whereToNext = nil

// segue to the next ViewController
performSegue(withIdentifier: identifier, sender: self)
}
}

关于ios - 在 unwind 中强制 segue,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57661439/

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