Xcode에서 빈 프로젝트로 시작해서 스토리보드를 추가하고, 이 스토리보드에서 정의한 초기화면을 앱에 띄우려고 하면 나오지 않는다. 빈 프로젝트 템플릿은 앱 로딩 프로세스에서 이러한 과정이 고려되지 않기 때문이다. 따라서 앱 델리게이트에서 다음 동작을 해줘야 한다.
UIWindow
를 생성하고 앱 델리게이트의window
속성에 연결한다.- 메인 번들에서 원하는 스토리보드를 읽어들인다.
- 여기서 초기 화면에 대한 뷰 컨트롤러를 추출한다.
- 추출한 뷰 컨트롤러의 뷰를 윈도에 추가한다.
- 윈도를 표시한다. (
-makeKeyAndVisible
메시지를 보낸다)
아래는 예시이다. 프로젝트를 생성할 때, “EmptyApp” 이라는 이름으로 생성했고, “EmptyApp.storyboard”라는 이름으로 스토리보드를 추가해서 여기에 화면을 그렸다.
// AppDelegate.m
-(BOOL)application:(UIApplication *)application
didFinishedLaunchingWithOptions:(NSDictionary *)launchingOptions
{
self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainscreen] bounds];
UIStoryboard *myStoryboard = [UIStoryboard storyboardwithName:@"EmptyApp"
fromBundle:[UIBundle mainBundle]];
UIViewController *rootViewController = [myStoryboard instantiateInitialViewController];
[self.window addSubView:rootViewController.view];
[self.window makeKeyAndVisible];
return YES;
}
물론 이렇게 하지 않고 Info.plist
파일을 편집 (Xcode에서는 프로젝트 설정값을 바꿈)해서 디폴트 스토리보드 파일 이름을 지정해주면 앱 로딩 프로세스에서 이상의 과정을 자동으로 처리해준다.