为iPad和iPhone选择视图开始

为iPad和iPhone选择视图开始,iphone,ipad,uiview,addsubview,Iphone,Ipad,Uiview,Addsubview,我的第一个应用程序是针对iPhone的,我决定也实现在iPad上使用的功能,如果是在打开iPhone或iPad时,我首先要选择要使用的视图,我在我的代表中写道: NSString *devy = [[UIDevice currentDevice]model]; if ([devy isEqualToString:@"iPad"]) { [window addSubview:viewController.viewCpuIpad]; [window makeKeyAndVisible

我的第一个应用程序是针对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上打开它时,只会显示一个空白屏幕。。。。哪里错了

感谢

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

如果您不想使用IB,可以在view controller的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及更早版本的宏。)

当您在iPad上启动时,不要调用

[窗口添加子视图:viewController.viewCpuIpad]

试试看

viewController.view=viewCpuIPad

[窗口添加子视图:viewController.view]

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

默认情况下,当您创建nib时,viewController.view设置为nib视图,该视图在iPhone上显示

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


希望这有帮助:)

viewController。viewcuipad
blank?viewcuipad是一个包含更多图像和数据的UIView。我调用方法中的代码“-(void)applicationdifinishLaunching:(UIApplication*)application”的delegate您尝试过记录有关它和
viewController
的信息吗?另外,请尝试记录
devy
以查看它的容量。不要使用[[UIDevice currentDevice]model]检查iPad是否可用。相反,请使用UI\u USER\u INTERFACE\u IDIOM()==UIUserInterfaceIdiomPad。
- (void)loadView
{
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
        self.view = // create view for iPad.
    } else {
        self.view = // create view for iPhone.
    }
}