2011-02-22 62 views
0

我试图构建我的第一个通用iOS应用程序使用基于窗口的应用程序的默认Xcode模板 - 并将设备系列设置为“通用”。 (我使用的是Xcode 4,但我相信这些模板与以前版本的Xcode几乎完全相同。)Xcode通用应用程序模板,并覆盖didFinishLaunchingWithOptions

这会创建一个共享应用程序委托以及特定的iPhone和iPad应用程序委托。

由于iPad将需要加载SplitViewController当应用程序启动,而iPhone将需要加载RootViewController的(表视图) - 我决定尝试重写didFinishLaunchingWithOptions方法在设备特定应用的代表,这样的为iPhone:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [super application:application didFinishLaunchingWithOptions:launchOptions]; 

    RootViewController *rootViewController = (RootViewController *)[_navController topViewController]; 
    rootViewController.context = [self managedObjectContext]; 

    [_window addSubview:_navController.view]; 

    return YES; 
} 

然而,由于Xcode中放置在“iPhone”或“iPad的”组设备特定应用程序的委托文件,我得到一个错误说未找到“RootViewController.h”文件。尽管试图导入它:

#import "RootViewController.h" 

有没有办法解决这个问题,或者我完全错误地解决这个问题?我宁愿不将“RootViewController.h”文件移动到iPhone组中,因为我认为它也将用于iPad。

回答

0

您应该遵循这种模式:http://www.kotancode.com/2011/04/05/ios-universal-apps/,你应该输入“RootViewController_iPhone.h”

+0

感谢您的答复。在我目前使用的应用程序中,“if(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPad)”在需要的地方......但我会在未来的应用程序中尝试其他方法。 – 2011-04-29 13:27:25