gpt4 book ai didi

iphone - 横向模式下的 tabBarController 和 navigationControllers,第二集

转载 作者:行者123 更新时间:2023-12-03 18:41:32 25 4
gpt4 key购买 nike

我有一个 UITabBarController,每个选项卡处理一个不同的 UIViewController,根据需要将新 Controller 推送到堆栈上。在其中两个选项卡中,当到达特定 Controller 时,我需要能够旋转 iPhone 并以横向模式可视化 View 。经过一番努力后,我发现必须子类化 UITabBarController 才能覆盖 shouldAutorotateToInterfaceOrientation。但是,如果我在实现中简单地返回 YES,则会出现以下不良副作用:

旋转 iPhone 时,每个选项卡中的每个 Controller 都会自动置于横向模式。

即使在每个 Controller 中重写 shouldAutorotateToInterfaceOrientation 以返回 NO 也不起作用:当 iPhone 旋转时, Controller 将置于横向模式。

我在子类 UITabBarController 中实现了 shouldAutorotateToInterfaceOrientation,如下所示:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if([self selectedIndex] == 0 || [self selectedIndex] == 3)
return YES;

return NO;
}

因此,只有我感兴趣的两个选项卡实际上获得了横向模式的支持。有没有办法支持特定选项卡堆栈上的特定 Controller 的横向模式?

我尝试过,但没有成功

(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

if([self selectedIndex] == 0 || [self selectedIndex] == 3)
{
if ([[self selectedViewController] isKindOfClass: [landscapeModeViewController class]])
return YES;
}

return NO;

}

此外,我尝试使用委托(delegate)方法 didSelectViewController,但没有成功。任何帮助是极大的赞赏。谢谢。

最佳答案

这是 UITabBarController 的扩展,它将对 shouldAutorotateToInterfaceOrientation 的调用委托(delegate)给当前选定的子 Controller 。使用此扩展,您不再需要子类化 UITabBarController,并且可以像人们期望的那样在 Controller 中使用 shouldAutorotateToInterfaceOrientation

UITabBarController+Autorotate.h:

#import <UIKit/UIKit.h>

@interface UITabBarController (Autorotate)
@end

UITabBarController+Autorotate.m:

#import "UITabBarController+Autorotate.h"

@implementation UITabBarController (Autorotate)

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
UIViewController *controller = self.selectedViewController;
if ([controller isKindOfClass:[UINavigationController class]])
controller = [(UINavigationController *)controller visibleViewController];
return [controller shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}

@end

关于iphone - 横向模式下的 tabBarController 和 navigationControllers,第二集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/756536/

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