我可以在我的项目中创build应用程序委托文件吗?

我有我的ipad代码创build编程不使用nib.I转换我的ipad应用程序为通用应用程序,如下所示:

select项目目标(侧栏上的蓝色)。 摘要 – > iOS应用程序目标 – >将设备设置为通用。

现在我想推出不同的应用程序委托为iPhone和不同的应用程序代表为iPad。已经有一个应用程序代表为iPad,现在我想为iPhone创build不同的应用程序委托,以便在main.m我可以启动不同的应用程序委托基于设备(iPad和iPhone)。所以我的问题是,我可以创build不同的应用程序委托,如果是的话,那么如何?

在项目main.m

你可以做类似的事情

 int main(int argc, char *argv[]) { @autoreleasepool { NSString *appDelegateName; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){ appDelegateName = NSStringFromClass([AppDelegateIPhone class]); } else { appDelegateName = NSStringFromClass([AppDelegateIPad class]); } return UIApplicationMain(argc, argv, nil, appDelegateName); } } 

但国际海事组织,你不应该这样做。

相反,苹果会这样做,在应用程序委托加载不同的视图控制器或不同的XIB。

 @implementation AppDelegate - (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; } @end 

你应该可以通过XIB为你的应用程序做到这一点。 默认情况下,AppDelegate是由MainWindow.xib (或者任何主要的XIB文件被调用的)文件所有者和委托出口之间的连接分配的。 如果你使用了转换器,那么MainWindow~ipad.xib应该有一个类似的sockets,这个sockets目前也指向同一个MainWindow~ipad.xib 。 如果你希望它们不同,创build一个新的AppDelegate子类,并将其分配给XIB的〜ipad版本的出口,它应该等同于调用UIApplicationMain,而不必手动完成。

你甚至不需要担心那里的“appDelegateName”variables。 只要打电话回来,如下所示:

  int main(int argc, char *argv[]) { @autoreleasepool { if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad){ return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate_iPad class])); } else { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate_iPhone class])); } } }