2011-11-13 2 views
6

프로그래밍 방식으로 생성 된 탭 표시 줄이 있고보기와 연결된 스토리 보드를 초기화하는 데 어려움을 겪고 있습니다.스토리 보드보기 컨트롤러가있는 프로그래밍 방식 탭 막대 만들기?

스토리 보드가없는 탭 막대에서보기를로드 할 수 있지만 (아래 코드 참조) 일부 UI 구성 요소가 스토리 보드에 있기 때문에보기가 일부만 표시됩니다.

내 스토리 보드의 이름은 MainStoryboard이며 스토리 보드보기 식별자는 SettingsViewController로 설정됩니다.

아래 코드에서 SettingsViewController에 대한 내 스토리 보드를 초기화하려면 어떻게해야합니까?

- (void)createTabBarItems { 
    tabBarController = [[UITabBarController alloc] init]; 

    settingsViewController = [[SettingsViewController alloc] init]; 


    UINavigationController *sett = [[[UINavigationController alloc] 
            initWithRootViewController: settingsViewController] autorelease]; 

    [sett.tabBarItem setTitle:@"Settings"]; 
    [sett.tabBarItem setImage:[UIImage imageNamed:@"settings.png"]]; 

    [tabBarController setViewControllers: 
     [NSArray arrayWithObjects:sett, sett, sett, sett, nil]]; 
} 

답변

16

당신은 당신이 직접 뷰 컨트롤러 할당하는 대신 스토리 보드의 방법을 사용해야하는 스토리 보드와 같이 뷰 컨트롤러를 초기화하려면 :

// load the storyboard by name 
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 

// either one of the two, depending on if your view controller is the initial one 
settingsViewController = [storyboard instantiateInitialViewController]; 
settingsViewController = [storyboard instantiateViewControllerWithIdentifier:@"SettingsViewController"]; 
+0

I을 코드의 첫 번째 줄에 오류가 발생했습니다. "selector 'storyBoardWithName :'"에 대해 알려진 클래스 메서드가 없습니다. 그래서 나는 코드의 첫 줄에 "bundle : nil"을 추가했다. 이제 오류가 발생합니다. "탐색 컨트롤러를 밀어 넣기가 지원되지 않습니다."오류 수정을 위해 무엇을 할 수 있습니까? "bundle : nil"을 추가하여 올바른 작업을 수행 했습니까? – kevin

+0

이제 작동 중입니다 ... 일부 코드가 섞여 있습니다. 고맙습니다! – kevin

+0

감사합니다. 번들 매개 변수가 실제로 누락되었습니다. 'bundle : nil'은 메인 번들에서 룩업을 할 것이기 때문에 괜찮습니다. –

0

스위프트 4

let storyboard = UIStoryboard(name: "Main", bundle: nil) 
settingsViewController = storyboard.instantiateInitialViewController() 
settingsViewController = storyboard.instantiateViewController(withIdentifier: "SettingsViewController") 
관련 문제