0

在 AppDelegate 中的方法 application:didFinishLaunchingWithOptions 中,我启动了一个视图控制器并添加到成为窗口根视图控制器的导航视图控制器。因为我的 iPad 应用程序只是水平方向,所以我的所有视图控制器都是为横向制作的。

这是代码:

self.myViewController = [[MyViewController alloc] init];
self.myNavigationController = [[MyNavigationController alloc] initWithRootViewController: self.myViewController];
self.window.rootViewController = self.myNavigationController;
[self.window makeKeyAndVisible];

return YES;

当我在“self.window.rootViewController = self.myNavigationController;”上放置断点时 行并在控制台中调用以显示视图详细信息,我得到以下信息: $0 = 0x0c89d010 >

我读到的矩形是方向模式(1024 宽和 748 高)

“return YES;”上的下一个断点 给我看这个:$1 = 0x0c89d010 >

它复制一个对象(据我所知)并改变方向(768 宽度和 1004 高度)

这只发生在 iOS5 中,但是 iOS6 可以正常工作

MakeKeyAndVisible 方法是否有任何我应该知道的已知问题?或者可能是我不了解 makeKeyAndVisible 的工作原理

4

1 回答 1

0

尝试创建一个自定义 UINavigationController,其中包含所有方向方法,并在您的应用程序中使用它。

会是这样的

自定义导航控制器.h

#import <UIKit/UIKit.h>
@interface CustomNavigationController : UINavigationController
@end

自定义导航控制器.m

#import "CustomNavigationController.h"


@interface CustomNavigationController ()

@end

@implementation CustomNavigationController


//overriding shouldAutorotateToInterfaceOrientation method for working in navController

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {

    return   [self.topViewController shouldAutorotateToInterfaceOrientation];

}

//other methods

这样,您的方向将在相应的 viewCorollers 中相应地工作。

于 2013-04-03T08:21:52.060 回答