gpt4 book ai didi

ios - 防止更改 View Controller 中的方向

转载 作者:行者123 更新时间:2023-11-29 01:39:37 24 4
gpt4 key购买 nike

我有像 Whatsapp 这样的消息应用程序 & ...层次结构如下:

Tab Bar Controller
Navigation Controller
View Controller
Target Controller

所以我们要像这样从 appDelegate 转到 Tabbar

UITabBarController  *ivc = [storyboard instantiateViewControllerWithIdentifier:@"mainTab"];
self.window.rootViewController = ivc;
[self.window makeKeyAndVisible];

我的问题我想在 Target Controller 中的某些条件下锁定方向但是 -(BOOL)shouldAutorotate supportedInterfaceOrientations 没有调用,我已经阅读了一些关于此的帖子,但我找不到正确的解决方案。像这样的帖子: Lock Screen Rotation in iOS 8

Handling autorotation for one view controller in iOS7

更新

经过几个小时的搜索,我找到了解决方案,但这还不够这个链接提示我,如果我们使用 UITabController 一切都会改变,我们应该调用

-(NSUInteger)navigationControllerSupportedInterfaceOrientations:(UINavigationController *)navigationController
{
return navigationController.topViewController.supportedInterfaceOrientations;
}

-(NSUInteger)tabBarControllerSupportedInterfaceOrientations:(UITabBarController *)tabBarController
{
return ((parentOfTarget*)[tabBarController.viewControllers objectAtIndex:0]).supportedInterfaceOrientations;
}

这是因为我会通知更改方向并阻止它,但我会看到状态栏的方向。

我想我需要打电话

navigationController.topViewController.shouldAutorotate;

但这会导致崩溃;(

TabBarController: Orienting views in different orientations

最佳答案

您应该使用 -supportedInterfaceOrientations' 而不是 -shouldAutorotate`。

Later 只应在运行时确定方向时使用。在您的情况下,您的 View Controller 将始终只支持纵向模式。

接下来,您的导航 Controller 的委托(delegate)必须实现以下方法以返回在导航堆栈顶部的 View Controller 上调用 -supportedInterfaceOrientations 的结果。

-(NSUInteger)navigationControllerSupportedInterfaceOrientations:(UINavigationController *)navigationController {
return navigationController.topViewController.supportedInterfaceOrientations;
}

关于ios - 防止更改 View Controller 中的方向,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32558690/

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