2016-11-22 5 views
0

popover 컨트롤러를 표시하려고하지만 어떤 이유로 올바르게 설정하기 위해 팝업의 너비/높이를 가져올 수 없습니다. 여기에 내가 사용하고있는 코드는 다음과 같습니다UIPopoverPresentationController 너비와 높이가 설정되어 있지 않습니다.

여기 내 코드입니다 :

 UIStoryboard* myStoryboard = self.storyboard; 

     ScenarioPopOver* popOver = (ScenarioPopOver*)[myStoryboard instantiateViewControllerWithIdentifier:@"scenarioPopover"]; 

     popOver.modalPresentationStyle = UIModalPresentationPopover; 
     [self presentViewController:popOver animated:YES completion:nil]; 

     // configure the Popover presentation controller 
     UIPopoverPresentationController *popController = [popOver popoverPresentationController]; 
     popController.permittedArrowDirections = UIPopoverArrowDirectionUp; 
     popController.delegate = self; 

     // in case we don't have a bar button as reference 
     popController.sourceView = self.view; 
     popController.sourceRect = CGRectMake(self.view.center.x - 25.0, 10.0, 50.0, 50.0); 

그러나 팝 오버는 다음과 같이 나오고 계속 :

enter image description here

+0

이것은 이상하게 들리 겠지만, 나에게 뭔가를 시도해보십시오. 'self.view'에 처음 접근하기 바로 직전에 자신의 줄에 다음을 추가하십시오 :'[self view];'. popover가 처음 나타날 때 뷰가 올바르게로드되지 않은 유사한 문제가있었습니다.이를 해결하는 것처럼 보이는 메서드를 사용하여 뷰에 액세스하면 ..... – EvilGeniusJamie

+0

주사위가 없습니다. 여전히 같은 결과를 얻고 있습니다. – PruitIgoe

답변

0

이런 경우에 누군가가이 문제를 통해 실수를 한단다. UIPopoverPresentationController에 preferredContentSize를 설정하려고했지만 UIViewController는 설정하지 않았습니다. 올바른 코드는 다음과 같습니다.

UIStoryboard* myStoryboard = self.storyboard; 

    ScenarioPopOver* popOver = (ScenarioPopOver*)[myStoryboard instantiateViewControllerWithIdentifier:@"scenarioPopover"]; 

    popOver.modalPresentationStyle = UIModalPresentationPopover; 
    [self presentViewController:popOver animated:YES completion:nil]; 

    // configure the Popover presentation controller 
    UIPopoverPresentationController *popController = [popOver popoverPresentationController]; 
    popController.permittedArrowDirections = UIPopoverArrowDirectionUp; 
    popController.delegate = self; 
    popOver.preferredContentSize = CGSizeMake(400.0, 300.0); 

    // in case we don't have a bar button as reference 
    popController.sourceView = self.view; 
    popController.sourceRect = CGRectMake(self.view.center.x - 150.0, 10.0, 0.0, 0.0);