通用iPhone/iPad AppDelegate

Doz*_*Doz 9 iphone xcode objective-c ipad

我想知道是否有人能够告诉我,从头开始一个新的应用程序,我将如何组织一个通用(iPhone/iPad)iOS应用程序.我注意到使用xCode Beta的默认模板,它为您提供了iPhone和iPad的共享AppDelegate和子类appdelegates.

现在,您如何通过逻辑来确定要使用哪个应用委托,如何知道哪个应用委托实例化并使用默认模板不会进行状态.如果我要在iPhone appDelegate中写一下,我怎么知道这只适用于iPhone iOS?

hot*_*aw2 13

应用程序的Info.plist("主nib文件基本名称")指定要加载的主窗口.xib文件,该.xib文件指定应用程序的应用程序委托和根窗口控制器.

iPad的Info.plist("NSMainNibFile~ipad")还为iPad指定了一个主窗口.xib文件,该文件可以包含应用程序的不同应用程序委托和不同的根窗口控制器.或者它们可以是相同的,使用运行时UIUserInterfaceIdiomPad检查.

运行时知道它运行的设备类型,从info.plist中选择要加载的正确初始.xib文件,然后从中获取正确的应用程序委托和根窗口控制器配置并运行.


Sag*_*gar 9

使用以下代码

id<UIApplicationDelegate> delegate = [[UIApplication sharedApplication] delegate]; 
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
    AppDelegate_iPad *appDelegate = (AppDelegate_iPad *) delegate;
else
    AppDelegate_iPhone *appDelegate = (AppDelegate_iPhone *) delegate;
Run Code Online (Sandbox Code Playgroud)

无论何时需要访问代理人.