2014-09-01 2 views
1

STTwitter을 통해 트위터 로그인 페이지를 시작하는 버튼이있는보기 컨트롤러가 있습니다. shouldPerformSegueWithIdentifier 함수는 isDoneTwitterLogin iVar에 따라 NO 또는 YES을 반환합니다.performSegueWithIdentifier가 실행되지 않음

LoginViewController *loginViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"Twitter Login"]; 
[loginViewController doneTwitterLogin:YES]; 
[loginViewController.navigationController performSegueWithIdentifier:@"User Info" sender:viewController]; 

가 마지막 줄 아무것도하지 않는 : 함수 - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation에서

, 나는 다음과 같은 코드가 있습니다. shouldPerformSegueWithIdentifier도 해고 당하지 않습니다.

내가 잘못하고있는 사항이 있습니까? 내 스토리 보드에 "사용자 정보"라는 LoginViewController의 부분이 있습니다.

업데이트 1 : LoginViewController 장면은 UINavigationController에 삽입되어 있습니다. "사용자 정보"부분이 LoginViewController 장면의 UIButton에 연결되어 있습니다.

LoginViewController *loginViewController = [[UIStoryboard storyboardWithName:@"Main" bundle:[NSBundle mainBundle]] instantiateViewControllerWithIdentifier:@"Twitter Login"]; 
[loginViewController doneTwitterLogin:YES]; 
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:loginViewController]; 
NSLog(@"%@", loginViewController.navigationController); 
[loginViewController.navigationController performSegueWithIdentifier:@"User Info" sender:loginViewController]; 

앞의 코드는 (null) 탐색 컨트롤러를 반환 :이 내가 시도 새로운 코드입니다. 위의 코드는 유효한 UINavigationController 개체를 반환합니다.

업데이트 2 : 위의 코드는 UINavigationController의 인스턴스에 "사용자 정보"라는 이름의 segue가 없다는 오류 메시지를 생성했습니다. 나는 아래의 하나에 라인을 변경 :

[loginViewController performSegueWithIdentifier:@"User Info" sender:loginViewController];

하지만이 중 아무것도하지 않습니다.

+0

'performSegueWithIdentifier' 코드는 어디에 있습니까? 여기에서는 네비게이션 컨트롤러에서 세 구 (segue)를 호출합니다. 따라서, 여러분이 요청하는 메소드는'UINavigationController'에서 호출 될 것입니다. – nhgrif

+0

왜 이것을 다운 그레이드 했습니까? – pedroremedios

답변

3

좋아요. 제가 문제를 해결했습니다.앱이 백그라운드로 갈 때 현재 표시된보기 컨트롤러를 저장 한 다음 앱이 활성화되기 전에 세그먼트를 수행해야했습니다. 그리고 downvote 주셔서 감사합니다. 정말 나를 집에서 느끼게 해줍니다!

0

shouldPerformSegueWithIdentifier이 segue를 수행하는보기 컨트롤러에서 호출됩니다. 이 경우

, 다음 줄이 경우

[loginViewController.navigationController performSegueWithIdentifier:@"User Info" sender:viewController]; 

우리 (따라서 뷰 컨트롤러 우리가 SEGUE을 수행 할 것을 요청)이 메소드를 호출하는 뷰 컨트롤러 인 loginViewController 님의 navigationController

당신이 실제로 탐색 컨트롤러 (loginViewController.navigationController 반환 nil을)이없는 loginViewController에서와 loginViewController하는 SEGUE을 엮은 것을 나에게 가장 가능성이 보인다. 그렇지 않으면이 코드가 다운되고이 이름으로 섹터가 없음을 나타내는 메시지가 나타납니다.

스토리 보드의 모든 내용이 올바르게 연결되었다고 가정하면 우리는 이런 식으로 performSegueWithIdentifier:를 호출하고 있습니다 :

[loginViewController performSegueWithIdentifier:@"User Info" sender:viewController]; 

(이 작동하지 않는 경우, 당신은 훨씬 더 많은 세부 사항을 제공해야 할 것입니다.)

+0

추가 정보가 추가되었습니다. – pedroremedios

+0

그리고 그게 작동하지 않았다. – pedroremedios

0

당신이있는 경우 스토리 보드에 내비게이션 컨트롤러를 만들고 loginViewController을 삽입하면 생성하지 않아도됩니다. 네비게이션 컨트롤러의 새로운 인스턴스.

LoginViewController *loginViewController = 
          [[UIStoryboard storyboardWithName:@"Main" 
                bundle:[NSBundle mainBundle]] 
        instantiateViewControllerWithIdentifier:@"Twitter Login"]; 
[loginViewController doneTwitterLogin:YES]; 
//perform segue from login to user info controller. 
[loginViewController performSegueWithIdentifier:@"User Info" 
             sender:loginViewController ]; 
+0

그래, 내일 그렇게 해보고 내 결과를보고 할게. – pedroremedios

+0

잡히지 않은 예외 'NSGenericException'으로 인해 *** 응용 프로그램을 종료하는 중 오류가 발생했습니다. 이유 : '사용자 정보'에 대한 탐색 컨트롤러를 찾을 수 없습니다. Push Segues는 소스 컨트롤러가 UINavigationController의 인스턴스에 의해 관리 될 때에 만 사용될 수 있습니다. 스토리 보드의 uinavigationcontroller에 뷰 컨트롤러를 다시 추가 한 후에도 오류가 발생합니다. – pedroremedios

관련 문제