我需要一个可以在Portrait和landscape中显示的视图。但是当我加载另一个视图时,我只希望它以横向显示。
我有一个视图控制器A.它可以以纵向和横向显示。此视图控制器由App代表创建。
当我单击视图A上的按钮时,我创建一个视图控制器B,我只想在横向显示。并加载视图,如[A.view addSubView:B.view]。
当我旋转设备时,函数shouldAutorotateToInterfaceOrientation仅在
中被调用
控制器A.无论我如何在控制器B中设置功能,都无法调用。
答案 0 :(得分:5)
在第一个视图中,请确保
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
return Yes;
}
在你的第二个视图中将其设置为
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
更新:
好的,试试这个...
在主视图控制器/应用程序委托中,每次设备旋转时都运行shouldAutorotateToInterfaceOrientation,放置一个全局级变量。
.h
@interface NavAppDelegate : NSObject <UIApplicationDelegate> {
Bool *isMain;
}
.m
-(void)viewDidLoad {
isMain = Yes;
}
-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
if (isMain) {
return Yes;
} else {
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft || interfaceOrientation == UIInterfaceOrientationLandscapeRight);
}
}
// This bit is where you'll have to adapt it to how you change your views
// but it's a basic idea.
-(void)bitThatDoesTheViewChange:(viewController *) controller {
isMain = No;
*viewController = controller;
[viewController release];
isMain = Yes;
}