2016-10-26 1 views
0

저는 Xcode의 타겟 컨셉에 대해 매우 새롭습니다. 동일한 프로젝트에서 두 개의 대상을 만드는 방법을 배우려면이 tutorial을 따라야합니다. 방금 목표 A가 지정된 앱 대리인으로 AppDelegateA.swift을 사용하는 방법을 알고 싶습니다. 대상 B는 지정된 앱 대리인으로 AppDelegateB.swift을 사용합니다. 이 자습서에서는 동일한 AppDelegate에서 두 개의 응용 프로그램을 만드는 방법을 실제로 가르쳐주기 때문에. 하지만 두 가지 (거의) 완전히 다른 앱을 만들고, 많은 리소스와 라이브러리를 공유합니다.동일한 프로젝트 내 다른 대상에 대해 다른 AppDelegate를 설정하는 방법은 무엇입니까?

우리가 주제를 다룰 때 대상 A에 Main이라는 스토리 보드를 사용할 수 있고 대상 B에도 Main이라는 스토리 보드를 사용할 수 있지만 실제로는 다른 스토리 보드입니다 (단, 동일한 프로젝트 내에 함께 넣음).)? 프로젝트에

main.m 

당신이 할 수있는 일

int main(int argc, char *argv[]) 
{ 
    @autoreleasepool { 

     NSString *appDelegateName; 
     if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone){ 
      appDelegateName = NSStringFromClass([AppDelegateIPhone class]); 
     } else { 
      appDelegateName = NSStringFromClass([AppDelegateIPad class]); 
     } 
     return UIApplicationMain(argc, argv, nil, appDelegateName); 
    } 
} 

좋아하지만 IMO 당신이하지 말아야 :

+0

궁금 해서요, 왜 이걸 원하니? – Alexander

+0

@AlexanderMomchliov 왜냐하면 그들은 코드가 분리되어 있기를 바랄 것이기 때문입니다 (논리에서). 제 견해로, AppDelegate는 응용 프로그램의 "진입 점"이기 때문에 실제로는 매우 다른 응용 프로그램 (그러나 많은 라이브러리와 자원을 공유하는 대상)을 구분해야합니다. 이는 AppDelegate를 포함하여 각 대상을 자체 폴더에 구성 할 수 있으므로 다른 프로젝트로 신속하게 복사 할 수 있습니다. –

+2

두 가지 다른 응용 프로그램이있는 경우 두 개의 다른 프로젝트 여야합니다. 그들의 공유 코드는 처음 두 개에서 참조되는 세 번째 라이브러리 프로젝트로 추출되어야합니다. – Alexander

답변

2

예 변경 다음 목표 메이크업에 따라 2 가지를 만들 수 있습니다 그것.

대신 사과로, 응용 프로그램 대리인에서 다른보기 컨트롤러 또는 다른 XIB로드하십시오.

+2

이것은 Swift가 아닌 (사전 ARC) Objective-C입니다. –

+0

이 코드를 신속하게 변환 할 수 있습니다. – Vinodh

+0

오, AppDelegate를 두 개 사용하는 대신 동일한 AppDelegate를 사용하지만 다른 화면을 모두로드합니다. 두 가지 방법을 모두 제공해 주셔서 감사합니다! –

0

여기 내 대답은 목표에 따라 여러 AppDelegate 파일을 포함하는 두 번째 부분에 도움이 되길 바랍니다. 당신은 단순히 기본 목표를 doublicating하면됩니다 여러 대상을 사용하는 첫 번째 부분에 대한 https://stackoverflow.com/a/43227300/2715840

, 당신은하지만 서로 다른 경로에 새 대상에 따라, 당신의 plist 이미 복사 변경 이름을 얻거나 그것을 같은 이름의 plist.info을 유지합니다 . 스토리 보드 및 Assets 또는 firebase plist 설정 파일과 같은 코드 파일을 분리하기 위해 위와 같은 목적으로 유효한 답변을 찾을 수 있습니다.

희망이 도움이됩니다.

관련 문제