UIViewController自动旋转不起作用

我在这个主题上发现了很多,但我无法弄清楚。 任何帮助将大量赞赏!

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

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

另外,我没有使用InterfaceBuilder,并且在所有视图上都应该使用AutorotateToInterfaceOrientation。 这是我遇到的唯一问题。

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

更新2011年11月10日

我仍然有这个问题,但通过文件和位查看这似乎是我的问题(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的第一个视图控制器才会旋转。


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

可能会对某人有所帮助。


我已经想通了......我正在查看将UIViewController推入堆栈的代码,并且我没有完全启动UIViewController。

链接地址: http://www.djcxy.com/p/54965.html

上一篇: UIViewController auto rotate not working

下一篇: Can't make three20 TTPhotoViewController rotate