2012-11-23 2 views
0

imagePickerController:didFinishPickingMediaWithInfo: 메서드에서 프로그래밍 방식으로 segue을 호출하려고하지만 작동하지 않습니다. 충돌하지는 않지만 작동하지 않습니다. 그것은 단지 아무것도하지 않습니다. prepareForSegue 메서드가 올바르게 호출됩니다.performSegueWithIdentifier from didFinishPickingMediaWithInfo를 호출하십시오.

- (void) imagePickerController:(UIImagePickerController *)picker 
     didFinishPickingMediaWithInfo:(NSDictionary *)info { 

    rutaFoto = [info valueForKey:UIImagePickerControllerMediaURL]; 
    [self dismissModalViewControllerAnimated:YES]; 
    [self performSegueWithIdentifier:@"aGaleria" sender:self]; 
} 

segue 링크 2 UIViewControllers. 그리고 내가 다른 곳 (예 : 푸시 UIButton 방법)에서 performSegueWithIdentifier으로 segue를 호출하면 작동합니다. 아이디어가 있으십니까?

+0

"aGaleria"는 어떤 종류의 segue입니까? 모달? 밀어? * viewDidDisappear *에서 segue를 호출 해보십시오. – rdurand

+0

모달입니다. 내가 viewDidDisappear에서 호출하려고했지만 작동하지 않았다 ... – Xithias

답변

3

dismissViewControllerAnimated를 사용해보십시오 : 완료 : 및 performSegueWithIdentifier에 대한 호출 넣어 : (완료 블록에 dismissModalViewControllerAnimated을 : 보낸 사람 : 어쨌든 감가 상각되므로 사용해서는 안됩니다).

 [self dismissViewControllerAnimated:YES completion:^{ 
      [self performSegueWithIdentifier:@"aGaleria" sender:self]; 
     }]; 
+0

만약 내가 이것을 쓰면 :'[self dismissViewControllerAnimated : 예 완료 : [self performSegueWithIdentifier : @ "aGaleria"sender : self]]; 이 오류가 발생합니다 : 호환되지 않는 유형 'void (^) (void)'매개 변수에 'void'를 전송 _ – Xithias

+0

@Xithias 내 편집 된 답변보기 – rdelmar

+0

죄송합니다. 구문 오류로 인해 죄송합니다. 그것은 효과가있다! 정말 고맙습니다! 내 메인 viewController가 잠시 표시된 다음 Galeria viewController로 이동합니다. mainViewController가 표시되지 않도록하는 방법이 있습니까? – Xithias

-2

이것이 현재 ViewController의 변경 사항을 처리중인 주 스레드와 관련이 있는지 궁금합니다. didFinishPickingMediaWithInfo와 트리거 된 원래 ViewController 간의 전환입니다. 나는 두 가지를 시도 할 것

, 첫 번째는 aGaleria의 SEGUE 호출 할 때 지연을 넣어하는 것입니다

sleep(2.0); 
[self performSegueWithIdentifier:@"aGaleria" sender:self]; 

두 번째, 그리고 더 나은 옵션을, 후보기에서 SEGUE을 수행하는 것입니다 완료되었습니다 .PickingMediaWithInfo. 당신은 원래의 ViewController에 새로운 NSNotificationCenter 트리거를 설정 한 후 didFinishPicking 방법에 지연을 게재 할 수 :

+0

둘 다 시도, 그들은 작동하지 않았다. didFinishPickingMediaWithInfo 메소드는 갤러리에서 그림을 선택한 후 정보를 수집하지만, didFinishPickingMediaWithInfo 메소드가 완료 될 때만 갤러리 컨트롤러가 닫히므로, Segue를 호출하면 시뮬레이터는 여전히 내 주 viewController가 아닌 갤러리를 표시합니다. 그래서 그게 문제가되어야하지만, 어떻게 해결 해야할지 모르겠다. ... – Xithias

관련 문제