gpt4 book ai didi

swift - 横向 View Controller 应用程序委托(delegate)

转载 作者:行者123 更新时间:2023-11-30 10:14:36 24 4
gpt4 key购买 nike

我试图仅将一个 View Controller 置于横向模式,将其他 View Controller 置于纵向模式。

首先,我尝试使每个 View Controller 的旋转无效,除了我想要的 View Controller (使用shouldAutoRotate false,仅纵向,...),但是使用我拥有的导航 Controller ,它与导航重叠栏与状态栏,我无法解决。因此,在那之后,我尝试清理我所做的一切,并仅从 AppDelegate 启用或禁用方向。

这是我找到并尝试过的代码:

    func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int {

if self.window?.rootViewController?.presentedViewController is SecondViewController {

let secondController = self.window!.rootViewController!.presentedViewController as! SecondViewController

if secondController.isPresented {
return Int(UIInterfaceOrientationMask.All.rawValue);
} else {
return Int(UIInterfaceOrientationMask.Portrait.rawValue);
}
} else {
return Int(UIInterfaceOrientationMask.Portrait.rawValue);
}

}

但是这段代码永远不会出现在第一个 if 中(即使 View Controller 是 SecondViewController)。

那么我知道如何检查我是否处于可以指定方向的特定 VC 中吗?

提前致谢!

最佳答案

检查此递归方法以获取当前 viewController

func getCurrentViewController(viewController:UIViewController?)-> UIViewController?{

if let tabBarController = viewController as? UITabBarController{

return getCurrentViewController(tabBarController.selectedViewController)
}

if let navigationController = viewController as? UINavigationController{
return getCurrentViewController(navigationController.visibleViewController)
}

if let viewController = viewController?.presentedViewController {

return getCurrentViewController(viewController)

}else{

return viewController
}
}

并在支持的方向方法上使用它,如下所示

func application(application: UIApplication, supportedInterfaceOrientationsForWindow window: UIWindow?) -> Int {

if let currentVC = getCurrentViewController(self.window?.rootViewController) as? SecondViewController{

return Int(UIInterfaceOrientationMask.All.rawValue)

}
return Int(UIInterfaceOrientationMask.Portrait.rawValue)
}

关于swift - 横向 View Controller 应用程序委托(delegate),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30937597/

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