我正在做一个通用应用程序,它分别为iPhone和iPad分配了2个应用代表。我是否可以使用bool值设置为BOOL isiPhone
和方法+(AppDelegate*)instance;
来检查单个应用委托中的设备。那么我该如何发布不同的观点呢?我得到了一些这样的代码片段
@interface AppDelegate : NSObject <UIApplicationDelegate, NSFetchedResultsControllerDelegate> {
UIWindow* window;
BOOL isiPhone;
@property (nonatomic, retain) IBOutlet UIWindow* window;
@property (nonatomic, assign) BOOL isiPhone;
+ (AppDelegate*)instance;
@end
在应用程序的App Delegate m文件中:
@synthesize m_ForIPhone;
self.MapVC = [[MapViewController alloc] initWithNibName:(self.isiPhone ? @"MapView" : @"MapView@pad") bundle:nil];
self.DetailVC = [[DetailViewController alloc] initWithNibName:self.isiPhone ? @"DetailView" : @"DetailView@pad" bundle:nil];
self.AboutVC = [[AboutViewController alloc] initWithNibName:self.isiPhone ? @"AboutView" : @"AboutView@pad" bundle:nil];
答案 0 :(得分:1)
您可以使用标准方式将~ipad
或~iphone
附加到XIB文件名的末尾,以指定XIB分别适用于iPad或iPhone。
所以你可能有:
MapView.xib
MapView~ipad.xib
DetailView.xib
DetailView~ipad.xib
AboutView.xib
AboutView~ipad.xib
它将为该平台选择最具体的一个,因此在iPhone上运行时,您将在iPad上加载MapView.xib
,它将加载MapView~ipad.xib
。
答案 1 :(得分:0)
使用以下代码
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;
每当您需要访问代理人时。