2011-12-15 1 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 

같은 응용 프로그램의 응용 프로그램의 위임 m 파일에 일부 코드를 가지고 .

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 아이 패드에 동안로드되는거야 :

그래서 당신은 할 수 있습니다.

+0

AppDelegate에 대해 동일한 규칙이 적용되는지 궁금합니다. 나의 주된 기능이 어느 것을위한 것인지 알 것인가? – Q8i

+0

리소스를 사용하는 곳이면 어디에서나 작동합니다. 예,'MainWindow.xib '에 사용하면 작동합니다. – mattjgalloway