xcode没有为通用应用创建不同的应用代理

时间:2012-08-21 18:30:51

标签: iphone objective-c xcode ipad

我是iphone的新手,我正在尝试创建一个通用应用。

现在我正在创建一个空的应用程序。根据所有教程,通过选中universal选项,它应该为iphone和ipad自动创建appdelegates

但我只能看到one appdelegate。请告诉我如何创建两者。

最好的问候

2 个答案:

答案 0 :(得分:3)

你真的应该只为通用应用程序使用一个AppDelegate。您可以使用它来分享您将在那里做的常见事情。您究竟需要多个AppDelegates?如果您需要针对设备类型执行某些操作(例如 - iPhone或iPad),那么您可以执行如下所示的三元表达式:

(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPad)? NSLog(@“iPad”):NSLog(@“iPhone”);

答案 1 :(得分:3)

Brayden回答你几乎从不需要多个应用代表是正确的。所有委托通常都会处理应用程序启动,暂停或终止的时刻。回到iPhone运行iOS 4.0并且iPad运行iOS 3.2的日子里,代理中可能需要非常不同的代码,因为只有iOS 4.0支持多任务处理。那些日子早已过去,你的代表应该在所有设备上采取相同的行动。

是的,您有时会达到一个程度,在iPhone和iPad上您的程序必须有不同的行为。那时检查成语而不是之前。否则你只是为了没有目的而复制代码。

我最近的应用程序几乎不包含针对iPhone或iPad的特殊检查。它甚至不使用不同的XIB。相反,我的自定义视图会实现layoutSubviews以填充可用空间。

也就是说,一旦你理解了应用代表,也许你会发现需要它们与众不同的情况。如果您完全确定您的iPhone和iPad行为会如此疯狂,您将需要:

  1. 手动创建一个新类(最好继承现有的AppDelegate类)
  2. main.m中,根据惯用语将新代理人的班级名称发送至UIApplicationMain
  3. 请参阅this answer“我可以在项目中创建App Delegate文件吗?”查看main.m的更改。