2013-08-27 4 views
1

나는 이것을 실행 해요 : 내 registrationcontroller.m에서실행 코드 내 appDelegate.m에서

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { 
    NSLog(@"url recieved: %@", url); 
    NSLog(@"query string: %@", [url query]); 
    NSLog(@"host: %@", [url host]); 
    NSLog(@"url path: %@", [url path]); 
    NSDictionary *dict = [self parseQueryString:[url query]]; 
    NSLog(@"query dict: %@", dict); 
    if([[url host] isEqual: @"success"]){ 
     RegistrationController *rc = [RegistrationController alloc]; 
     [rc regSuccess]; 
    } 
    else if([[url host] isEqual: @"fail"]){ 
     RegistrationController *rc = [RegistrationController alloc]; 
     [rc regFailed]; 
    } 
    return YES; 
} 

내가 가진이

-(void)regSuccess{ 
    NSLog(@"REGSUCCESS!!!:D"); 
    UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil]; 
    WaitController *rc = [storyboard instantiateViewControllerWithIdentifier:@"waitcontroller"]; 
    [self.navigationController pushViewController:rc animated:NO]; 
} 
-(void)regFailed{ 
    NSLog(@"REGFAILED!!!:("); 
    [UIView animateWithDuration:1.0 animations:^{ 
     _wheel.alpha = 0.0; 
}]; 
} 

내 URL 방식에 연결 내 휴대 전화에서 응용 프로그램으로 리디렉션되고 콘솔에서 REGSUCCESS !!! : D를 출력하므로 registrationcontroller.m 내부의 메서드가 호출되었음을 알 수 있습니다. 내가 가지고있는 문제는 대기 컨트롤러가 푸시되지 않았거나 regSuccess 메서드 내에서 개체의 다른 조작이 작동하고 있다는 것입니다. . 행운 :(와 시간이에 대한 수정을 찾아왔다 제발 도와주세요

참고 :. 를 내가 이미 regSuccess을 구현

감사

+1

rc를 초기화하지 않는 이유가 있습니까? – JeffRegan

+0

regSuccess 메서드에 일부 중단 점을 추가하십시오. 그들을 공격 할 때 스토리 보드 포인터가 유효하고 rc 포인터가 유효한지 확인하고 마지막으로 self.navigationController가 네비게이션 컨트롤러의 인스턴스를 가리키고 있는지 확인하십시오. 네비게이션 컨트롤러를 어디에서 인스턴스화하는지는 알 수 없으므로 놓친 부분에 대한 첫 번째 추측이됩니다. – isaac

+0

어디서나 내 내비게이션 컨트롤러를 인스턴스화하지 않습니다 ... 스토리 보드에 하나를 추가하고 초기보기 컨트롤러에 연결했습니다. 그들 중 하나라도 오류가 없습니다. rc를 초기화했지만 출력에 아무런 영향을 미치지 않았습니다. self.navigationController가 네비게이션 컨트롤러의 인스턴스를 가리키고 있는지 확인하는 방법을 모릅니다. 내가 잘못 본 것이 아니라면, self.navigationController를 사용하여 뷰가 navigationController에 푸시되었는지 확인하고,있는 경우 반환합니다. 입력 한대로, 탐색 컨트롤러 (faceslap). –

답변

0

한 가능한 registrationcontroller.h 내부 방법을 regFailed있다! 그 이유는 [self.navigationController pushViewController..]이 작동하지 않을 수 있다는 것입니다. self.navigationController이 존재하지 않을 수 있습니다 ., Storyboard 또는 프로그래밍 방식으로 UINavigationController이 라인 어딘가에 도입 된 것이 중요합니다. 당신 스토리 보드에 포함되어 있습니다. 코드에서 eferencing을 사용하면 아직 푸시하지 않은 컨트롤러 내에있는 탐색 컨트롤러에서 컨트롤러를 밀어 넣으려는 것처럼 작동하지 않습니다. 중요한 것은 XCode에 중단 점을 설정하고 regSuccess 메서드를 보면 디버거에 self.navigationController에 대한 유효한 포인터가 표시되는지 확인하는 것입니다. 네가 가진 것이 없다면 아무 것도 할 수 없을거야.

탐색 컨트롤러가 있고 (보기 계층 구조 자체가 응용 프로그램의보기 계층에 추가되었다는 것을 확인한 경우) 다음에 추가하려는보기 자체를 살펴볼 필요가 있습니다. 아마도 이것은 rc.view 일 것입니다. 오히려 탐색 스택에 추가하는 대신, 당신이 전화를하면 어떻게됩니까 :

[[self view] addSubview:[rc view]]; 

또한, 변수를 검사 할 디버거를 사용하거나 변수를 기록함으로써 rc.view의 특성을 평가한다. 프레임이란 무엇입니까? 어디에서 나타나야합니까? 뷰가 제대로 생성되지 않습니까?

+0

'[UIView animateWithDuration : 1.0 애니메이션 :^{_wheel.alpha = 0.0; }]; ' –

+0

이 코드는 regSuccess에서 실행했을 때도 작동하지 않습니다. 파일의 다른 곳에서도 완벽하게 실행됩니다. 내 주요 관심사는 AppDelegate에서이 메서드를 호출하면 개체의 알파 값을 변경하거나보기 컨트롤러를 밀어 넣는 것과 같이 컨트롤러를 조작 할 수 없다는 것입니다. –

+0

join.me를 통해 제 코드를 살펴볼 수 있습니까? 그렇게하면 전체 그림을 더 쉽게 얻을 수 있습니까? –