我的应用具有三种状态:
- A) 连接到服务器
- B) 已连接到 wifi,但没有互联网
- C) 没有联系
第一个状态是应用程序的默认操作模式,另外两个(B 和 C)呈现为模态视图 Controller 。在各种可达性更改时,应该会出现正确的模态视图。
不幸的是,在某些情况下,B 和 C 都试图同时出现,或者 B 当前出现并且可能距离关闭还有一毫秒的时间,但 C 已经在尝试显示自己。
我的解决方案基本上是为每个模态视图创建一个带有一些委托(delegate)的信号量 - 当模态视图打开时,它会通过委托(delegate)发送消息以转到主视图以打开标志。然后当第二个模态视图试图打开时,它会看到第一个打开并等待直到它关闭。对于试图制作一个非常基本的状态机的我来说,这似乎是一个荒谬的 hack。
有什么想法吗?
最佳答案
我会将单独的 B 和 C 案例折叠到一个 View Controller 中,该 View Controller 根据 B 或 C 在任何给定时刻发生的情况更改其 View 。这样你就不会让它们相互竞争,因为永远只有一个 View Controller 。
关于iphone - 在相互竞争的模态视图 Controller 之间切换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8995344/