gpt4 book ai didi

ios - 在弹出另一个 WatchKit Controller 后立即推送一个新的 WatchKit Controller 总是失败

转载 作者:行者123 更新时间:2023-11-30 12:21:36 26 4
gpt4 key购买 nike

好的。在经典 iOS 中做到这一点很容易,但 WatchKit 不提供任何 block /闭包,并且在带/不带动画之间没有选择。

我有一个根 Controller ,其中有一个选项列表。触摸其中一个选项(在 watch 或手机上)将关闭任何当前打开的 Controller ( popToRootController ),然后立即关闭 push a new one .

或多或少,像这样:

self.popToRootController()
self.pushController(withName: "IKANHAZCHEEZEBURGR", context: nil)

问题是调用之间没有足够的时间,并且没有 lambda 可供我执行信号量或推送 Controller 。

如果我使用调试器单步执行,它就会发生,没问题。如果我只是点击“运行”,它就不起作用。这就是所谓的 a "heisenbug" .

我想我可以做一个一次性计时器,但这似乎是一种可怕的黑客行为,它实际上可能会导致原力的破坏。

还有更好的想法吗?我错过了什么?

我知道 iOS 有很多答案。他们在这里并没有给我带来很多好处。

最佳答案

好吧,我屈服于黑暗面,并进行了计时器黑客攻击。有用。我需要为每个打开的 Controller 提供大约 0.4 秒的时间。

这是我所做的近似:

self.popToRootController()
let _ = Timer.scheduledTimer(timeInterval: 0.4, target: self, selector: #selector(self.timerCallback(_:)), userInfo: nil, repeats: false)

func timerCallback(_ timer: Timer) {
if let timerIndex = timer.userInfo as? Int {
if 0 <= timerIndex {
DispatchQueue.main.async {self.pushController(withName: "IKANHAZCHEEZEBURGR", context: nil)}
}
}
}

更新:我确实想提一下,即使这“解决”了我的问题,但这个问题甚至是一个问题。我的设计很糟糕,我正在重新设计基本导航。我将使用基于页面的方法,而不是这种分层设计。

一般原则上,如果我需要破解才能使其工作,我通常最好采用不同的方式。

关于ios - 在弹出另一个 WatchKit Controller 后立即推送一个新的 WatchKit Controller 总是失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44728861/

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