当我创建一个项目并在没有更改的情况下启动它并且加载了自动创建的viewcontroller时,它会毫无问题地调用shouldAutorotateToInterfaceOrientation。 现在我尝试了不同的方法来呈现自己的viewcontroller,但在该视图中,不会在旋转时调用shouldAutorotateToInterfaceOrientation。 我的第一次尝试是以这种方式更改app delegate的didFinishLaunchingWithOptions:
ProjectView1 *pv1 = [ProjectView1 alloc];
self.viewController = pv1;
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
但是在ProjectView1中,旋转屏幕时不会调用shouldAutorotateToInterfaceOrientation。
我的第二次尝试是加载通过创建项目创建的视图,并通过调用presentModalViewController来呈现我的自定义视图,但结果与我的自定义视图控制器没有调用shouldAutorotateToInterfaceOrientation相同。
答案 0 :(得分:1)
在为UIViewController执行alloc之后,应该调用initWithNib方法。
我尝试复制这个场景,然后代码调用了方向更改的shouldAutorotateToInterfaceOrientation:
ProjectView1 *pv1 = [[ProjectView1 alloc]initWithNibName:nil bundle:nil];
self.viewController = pv1;
self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
如果您打算自己构建视图,请更改放置正确nib文件名的代码或保留nil。