2012-09-24 4 views
1

xcode에서 storyBoards를 사용하고 있으며 Disclaimer 역할을하는 alertView를 만들고 있습니다. 선택된 버튼을 누르면 (예/아니오) rootViewController를 전환하고 저장하려고합니다. 이 말은 예를 누르면 응용 프로그램이 다른 rootViewController로 실행되도록 시작된 다음에 시간이 필요하다는 것을 의미합니다. 그러나 스토리 보드를 사용할 때 MainStoryBoard의 화살표로 rootViewController를 지정하면 어떻게 할 수 있습니까? 미리 감사드립니다.Storyboards를 사용하여 프로그래밍 방식으로 rootViewController를 변경할 수 있습니까?

답변

1

내가 한 방식은 RootViewController viewDidLoad 메서드에서 비슷한 조건을 확인하는 것입니다.

당신은 확인 할 수있는 사용자는 다음 경우 용어 등 ... 촬영할의 ViewController에 SEGUE을 수행 RootViewController의 viewDidLoad에 내부

(NSUserDefaults 또는 뭔가이 보관) 가능 여부 앱 시작 시점까지

사용자가이 앱을 새 화면에 곧바로 시작했다고 생각하기 때문에 화면에 무엇이 오기 전에 이러한 문제가 발생합니다.

또한 이제 popToRootViewController 메서드를 사용하면 잘못된 화면으로 이동합니다. 그러므로 긴장을 풀어보십시오. 이것은 여러 팝업을하지 않고도 스택의 어느 위치에서나 viewController로 돌아갈 수있는 방법입니다.

필요한 경우 긴장을 풀는 동작에 대한 자세한 정보가있는 링크를 찾을 수 있습니다.

1

일반적으로 스토리 보드에서보기 또는 컨트롤러보기를 다시 사용할 수 없습니다. awakeFromNIB에서 코드에 연결된 정적 표현입니다.

스토리 보드의보기에 다른보기 컨트롤러를 연결하려는 경우에도 마찬가지입니다. 같은 이유로 스토리 보드에서 rootViewController를 변경할 수도 없다고 생각합니다.

스토리 보드는 훌륭한 추상화입니다. 그러나 그 아래에는 평범한 오래된 펜촉이 있습니다. 모든 VC를 코딩 할 수있는 유연성을 원한다면 rootViewController를 교체해야합니다.이 뷰를 포함하는 다른 펜촉을 만들어야합니다. 스토리 보드를 사용하면 즉시 재구성 할 수 없습니다.

+0

수정, 당신은 할 수없는 변화를보고 다음의 devs 너무 늦지 않았습니다 알고 rootViewController하지만 viewDidLoad에서 segue를 수행하여 두 번째 viewController에 앱을 여는 착각을 할 수 있습니다. 그게 내가하는 일이야. – Fogmeister

2

다른보기 컨트롤러에서 시작해야한다는 것을 알려주는 쿠키 (예 : NSUserDefaults 사용)를 설정할 수 있습니다. 그런 다음 응용 프로그램 위임에 당신이 쿠키 값을 확인 할 수 있으며 rootViewController 다음 스토리 보드에 설정된 초기 하나가 될 것입니다 변경되지 않은 경우 그

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
// Register User Defaults Values 
[[NSUserDefaults standardUserDefaults] registerDefaults:@{@"tutorial_already_displayed":@NO}]; 

if ([[NSUserDefaults standardUserDefaults] boolForKey:@"tutorial_already_displayed"] == NO) 
{ 
    UIStoryboard*  storyboard = [UIStoryboard storyboardWithName:@"Storyboard" bundle:nil]; 
    UIViewController* rootViewController = [storyboard instantiateViewControllerWithIdentifier:@"Tutorial"]; 
    self.window.rootViewController = rootViewController; 
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"tutorial_already_displayed"]; 
} 

return YES; 
} 

처럼 스토리 보드의 초기 뷰 컨트롤러를 변경합니다.

그래서 당신의 버튼을 클릭 당신의 행동, 당신은 추가 할 수

[[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"tutorial_already_displayed"]; 

그래서 튜토리얼

가 도움이 희망 최초의 뷰 컨트롤러로 나타납니다! 행운을 빕니다.

추신 :이 질문은 오래 전에 요청하고있다하지만 허용 대답이 없었기 때문에, 그것은이 대답 ;-)