1

I는 다음과 같습니다 스토리 보드가 있습니다시도는 그보기 창 계층 구조에없는 VC에 모달 VC를 제시

Storyboard

이 어떻게 작동하는지 경우 : InitialSlidingViewController가로 탐색 VC의 인스턴스를 탐색 VC 인스턴스화 도착 후

-(void)viewDidLoad { 
    [super viewDidLoad]; 

    self.topViewController = [self.storyboard instantiateViewControllerWithIdentifier:@"Navigation"]; 

} 

, 그것은 기본 메뉴를 생성하고 설정하는 것을 underLeftVC 같은 : topViewController는로서의하는 .m 파일에 다음과 같습니다. 이것은 ECSlidingViewController을 사용하고 있습니다. Facebook과 비슷한 팬 제스처를 사용하는 슬라이딩 메뉴가 생성됩니다.

NavigationVC의 rootVC는 내 ItemsCDTVC입니다. + 버튼을 클릭하면 카메라에서 사진을 찍거나 사진 라이브러리에서 사진을 찍을 수있는 작업 시트가 나타납니다. 그러나, 나는 그것을 모달에 따라 ManageItemVC에 맞추고 방금 선택한 그림을 UIImageView에 설정하려고합니다. InitialSlidingVC 화면에 없기 때문에 ItemCDTVC는, 사실

Warning: Attempt to present <ManageItemViewController: 0x81d52a0> on <InitialSlidingViewController: 0x8122ce0> whose view is not in the window hierarchy! 

, 그러나 나는이 문제를 어떻게 해결합니까 : 나는 제시 할 때, 다음과 같은 오류가 발생합니다?

맨 아래의 유연한 공간에서 식별자를 사용하여 스토리 보드에 모달 유형을 설정했습니다 (탭 한 경우 아무 것도하지 않으므로 시각적 인 부분을 만들도록 선택 함). 모달 VC를 제시 할 때 실패

-(void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    // let's get the edited image 
    UIImage *image = info[UIImagePickerControllerEditedImage]; 
    // but if for some reason we disable editing in the future, this is our safeguard 
    if(!image) image = info[UIImagePickerControllerOriginalImage]; 
    if(image) { 
     self.pictureImageView.image = image; 
     [self performSegueWithIdentifier:@"addItemSegue" sender:self]; 
    } 
    [self dismissViewControllerAnimated:YES completion:nil]; 
} 

-(void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender 
{ 
    if([segue.identifier isEqualToString:@"addItemSegue"]){ 
     ManageItemViewController *manageItemVC = (ManageItemViewController *)[segue destinationViewController]; 
     manageItemVC.pictureImageView = self.pictureImageView; 
    } 
} 

:이 ItemCDTVC 내 SEGUE 코드입니다.

- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info 
{ 
    // let's get the edited image 
    UIImage *image = info[UIImagePickerControllerEditedImage]; 
    // but if for some reason we disable editing in the future, this is our safeguard 
    if(!image) image = info[UIImagePickerControllerOriginalImage]; 
    if(image) { 
     self.pictureImage = image; 
     [self dismissViewControllerAnimated:NO completion:^{ 
      [self performSegueWithIdentifier:@"addItemSegue" sender:self]; 
     }]; 
    } 
} 

답변

5

내가해야 할 일을했을 유일한은 그래서, SEGUE을 수행하기 위해 시도하기 전에 imagePickerController를 기각하고, 수정했습니다. 해고 이후뿐만 아니라 완료 블록에서.
+0

우수 : – Camus