选择iPad和iPhone的视图

时间:2011-12-14 22:27:20

标签: iphone ipad uiview addsubview

我的第一个仅适用于iPhone的应用程序我决定实现在iPad上使用的功能,我想要选择在iPhone或iPad开启时使用的视图,我写的代表:

NSString *devy = [[UIDevice currentDevice]model];
if ([devy isEqualToString:@"iPad"]) {
    [window addSubview:viewController.viewCpuIpad];
    [window makeKeyAndVisible]; 
} else {
    [window addSubview:viewController.view];
    [window makeKeyAndVisible];    
}

当iPhone没问题的时候,但是当我在iPad上打开它时只显示一个空白的屏幕....哪里错了?

感谢

2 个答案:

答案 0 :(得分:0)

Apple推荐的方式(取自Xcode的通用应用程序项目模板)是:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    // Override point for customization after application launch.
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPhone" bundle:nil] autorelease];
    } else {
        self.viewController = [[[ViewController alloc] initWithNibName:@"ViewController_iPad" bundle:nil] autorelease];
    }
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
}

如果您不想使用IB,可以在视图控制器的loadView方法中创建视图,如:

- (void)loadView
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        self.view = // create view for iPad.
    } else {
        self.view = // create view for iPhone.
    }
}

(UI_USER_INTERFACE_IDIOM()是支持iOS 3.1及更早版本的宏。)

答案 1 :(得分:0)

当你在iPad上发布时,而不是打电话,

[window addSubview:viewController.viewCpuIpad];

试试,

viewController.view = viewCpuIPad;

[window addSubview:viewController.view];

我的建议是,当您在iPad上启动时,您不会更新viewController.view属性。

默认情况下,创建nib时,viewController.view设置为为iPhone显示的nib视图。

对于iPad,您应该将此[viewcontroller view]属性更新为指定的视图。另外,正如Hoshi所建议的那样,它也是一个有两个不同Nib文件的好方法,这样你就可以根据条件加载所需的笔尖。

希望这会有所帮助:)