覆盖在类别中定义的shouldAutorotateToInterfaceOrientation

时间:2012-04-28 09:35:59

标签: ios objective-c ios5

我定义了以下类别,以允许TabBarController

中的方向
@implementation UITabBarController (MyApp) 

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return (interfaceOrientation == UIInterfaceOrientationPortrait || interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}

@end

现在有几个viewcontroller我不想允许横向模式。因为我使用了类别,所以忽略viewcontroller中的方法。有办法解决这个问题吗?

(我知道你可以继承UITabBarController,但苹果自己不鼓励这样做。)

1 个答案:

答案 0 :(得分:0)

您可以询问类别中的当前视图控制器:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
    return [[self selectedViewController] shouldAutorotateToInterfaceOrientation:interfaceOrientation];
}

您可能希望根据需要实施更多逻辑。此外,子类化在您的情况下比自定义类别更好,覆盖全局的东西可能会在未来的某个时刻中断。