【发布时间】:2019-03-10 03:21:54
【问题描述】:
我有一个以 UITabBarController 作为根视图控制器的基本应用程序。当应用程序的用户未登录时,我通过window!.rootViewController!.present(viewController, animated: true) 在我的AppDelegate 中显示模态控制器。这适用于所有 iPhone 型号,但在任何 iPad 上都会发生以下情况:
SignInController 的背景颜色在过渡期间可见。现在出现了奇怪的事情:当我将 Interface Builder 中的视图更改为 iPad 时,bug 就这样消失了:
将背景颜色改回透明默认值至少会删除白色背景,但是视图仍然从左下角开始动画,这是我不想要的。顺便说一句,在 Interface Builder 中更改视图会破坏所有 iPhone 上的动画。改回来可以修复它,但会再次损坏所有 iPad。
这是代码(使用 ReSwift 进行状态管理):
func newState(state: State) {
switch (previousState.session, state.session) {
case (.loading, .notSignedIn), (.signedIn, .loading):
(window!.rootViewController! as! UITabBarController).selectedIndex = 0
let viewController = storyboard.instantiateViewController(withIdentifier: "SignInViewController")
window!.rootViewController!.present(viewController, animated: true, completion: nil)
default:
// more stuff
break
}
}
编辑:添加实际代码。
【问题讨论】:
-
“当应用程序的用户未登录时,我将显示一个模态控制器”问题是何时您正在这样做。显示您的实际代码。