UIViewController自动旋转不起作用

问题描述:

我在这个主题上发现了很多,但我无法弄清楚。任何帮助将大量赞赏!UIViewController自动旋转不起作用

我有一个应用程序与UITabBarController设置。在其中一个选项卡中,我展示了一个使用UINavigationController来允许层次结构的UITableView。当方向改变时,所有的表格都可以很好地旋转,直到我找到层次结构中最终的视图。

最后的看法是不是一个UITableView,只是一个基本的UIView。但我无法让这个页面旋转成功!我用必要的绝对基础重新构建了视图,它仍然不想工作!代码如下,但它目前几乎是一个标准模板,没有任何内容。

此外,我没有使用InterfaceBuilder,并且shouldAutorotateToInterfaceOrientation在所有视图上。这是我遇到的唯一问题。

SomeView.h

#import <UIKit/UIKit.h> 
@interface SomeView : UIViewController 
{ 
    NSString *someID; 
    NSString *someName; 
} 
@property(nonatomic,retain) NSString *someID; 
@property(nonatomic,retain) NSString *someName; 
@end 

SomeView.m

#import "SomeView.h" 
#import "AppDelegate.h" 
@implementation SomeView 
@synthesize someID, someName; 

-(void)loadView 
{ 
} 

-(void)viewDidLoad 
{ 
    [super viewDidLoad]; 
} 

-(void)viewDidUnload 
{ 
    [super viewDidUnload]; 
} 

-(BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation 
{ 
    return YES; 
} 

-(void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation duration:(NSTimeInterval)duration 
{ 
    NSLog(@"willAnimateRotationToInterfaceOrientation"); 
} 

-(void)didReceiveMemoryWarning 
{ 
    [super didReceiveMemoryWarning]; 
} 

-(void)dealloc 
{ 
    [super dealloc]; 
} 
@end 

UPDATE 10日2011年11月

我仍然有这个问题,但通过文件,这似乎位看成为我的问题(http://developer.apple.com/library/ios/#qa/qa1688/_index.html

视图控制器的UIView属性嵌入到UIWindow中,但与其他视图控制器一起嵌入。

您可能会发现在给定视图控制器启动时shouldAutorotateToInterfaceOrientation被调用一次的情况,但设备旋转时不会再次调用该方法。由于视图控制器与他们管理的视图紧密相关,它们也是用于处理事件的响应者链的一部分。视图控制器本身就是UIResponder类的后代,并被插入到托管视图和其超级视图之间的响应者链中。因此,通常的做法是在应用程序中将一个主视图控制器作为响应器链的一部分。您通常会将一个主视图控制器(如UINavigationController,UITabBarController或通用UIViewController)添加到您的UIWindow。例如,这是通过调用:

[myWindow addSubview:primaryViewController.view];

如果一个附加视图控制器的UIView的属性添加到一个UIWindow(在相同的电平作为主视图控制器)通过以下:

[mywindow的addSubview:anotherController.view];

这个额外的视图控制器将不会收到旋转事件,并且永远不会旋转。只有添加到UIWindow的第一个视图控制器才会旋转。

+0

是SomeView分配给您的标签栏中的其中一个选项卡,还是通过导航控制器从其他选项卡中钻取一个导航到? –

+0

这个UIView和其他工作的UIView必须有区别。也许一个简单的'diff'可能会有所帮助。 –

+0

@PaulTiarks Tabbar是根,通过在导航控制器中浏览表格来浏览someview。 – rich

而且我已经想通了...... 我一直在寻找其推动的UIViewController到堆栈中的代码,我还没有完全initied的UIViewController中。

我的UITabBarController停止自动旋转,当我添加一个新的导航控制器给它与tableViewController并没有注意到,我的自定义导航控制器的shouldAutorotateToInterfaceOrientation返回YES仅适用于一个方向。解决方案是检查TabBarController中每个Controller中的shouldAutorotateToInterfaceOrientation函数。

可能对别人有帮助。