2011-12-15 9 views
0

iPhoneとiPad用に2つのアプリケーションデリゲートを持つ汎用アプリケーションを作成しています。 BOOL isiPhone+(AppDelegate*)instance;のようにyesに設定されたbool値を使用して、単一のアプリケーションデリゲートでデバイスをチェックすることはできますか?それでは、どのようにしてさまざまなビューを起動できますか?ユニバーサルアプリケーション用の単一アプリケーションデリゲート

@synthesize m_ForIPhone; 

self.MapVC = [[MapViewController alloc] initWithNibName:(self.isiPhone ? @"MapView" : @"[email protected]") bundle:nil]; 
self.DetailVC = [[DetailViewController alloc] initWithNibName:self.isiPhone ? @"DetailView" : @"[email protected]" bundle:nil]; 

self.AboutVC = [[AboutViewController alloc] initWithNibName:self.isiPhone ? @"AboutView" : @"[email protected]" bundle:nil]; 

答えて

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; 

:私はこの

@interface AppDelegate : NSObject <UIApplicationDelegate, NSFetchedResultsControllerDelegate> { 

UIWindow* window; 
BOOL isiPhone; 

@property (nonatomic, retain) IBOutlet UIWindow* window; 
@property (nonatomic, assign) BOOL isiPhone; 

+ (AppDelegate*)instance; 

@end 

のように、アプリケーションのアプリケーションデリゲートメートルファイルにいくつかのコードスニペットを得ました。

1

XIBファイル名の末尾に~ipadまたは~iphoneを追加する標準的な方法を使用して、XIBがそれぞれiPadまたはiPhone用であることを指定できます。

だからあなたが持っているかもしれません:

MapView.xib 
MapView~ipad.xib 

DetailView.xib 
DetailView~ipad.xib 

AboutView.xib 
AboutView~ipad.xib 

をそれはとてもそれがMapView~ipad.xibをロードするあなたはMapView.xibは、iPad上でながらロードされますよiPhone上で実行して、そのプラットフォームのための最も具体的なものを選択します。

+0

同じ規約がAppDelegateで動作するかどうかは疑問でした。私の主な機能はどちらの機能があるのか​​知っていますか? – Q8i

+0

これは、リソースを使用する場所であればどこでも動作します。ですから、もし 'MainWindow.xib'のためにそれを使用すればうまくいきます。 – mattjgalloway

関連する問題