2016-06-14 4 views
0

다음 코드를 사용하여 팝업을 만듭니다. 가로 방향의 팝업 메뉴가 전체 화면을 차지합니다.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 
    if ([[segue identifier] isEqualToString:@"popover"]) { 
     self.popoverTvc = [segue destinationViewController]; 
     self.popoverTvc.popoverPresentationController.delegate = self; 
    } 
} 

사용자가 탐색 모음에서 버튼을 클릭

는 팝 오버 스타일의 위 SEGUE가 트리거되고 결과보기 컨트롤러의 tableview를 가지고있다.

문제는 세로 모드에서

는, 테이블 뷰의 크기가 사용할 수있는 내용의 크기에 따라입니다 것입니다. 그러나 가로 뷰에서 세로 뷰로 뷰를 변경하면 테이블 뷰에는 빈 셀이 표시되므로 빈 셀이 UI를 차단합니다. 왜 이렇게이다? 가로 모드에서도 전체 화면을 차단하지 않도록 tableview를 원합니다. 보기에 다음 코드를 사용하여

임 대신 size of table view is as per the size of the contents available.

if (self.tableView && self.presentingViewController) { 
    self.preferredContentSize = [self.tableView sizeThatFits:self.presentingViewController.view.bounds.size]; 
} 

답변

1

프로그래밍 팝 오버 창의 크기를주고있는 tableview를 크기를 조정하는 부하 방법을했다.

- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { 

    NSString *identifier = segue.identifier; 
    if ([identifier isEqualToString:@"popover"]) { 

     UIViewController *dvc = segue.destinationViewController; 
     dvc.preferredContentSize = CGSizeMake(180,128); 


     UIPopoverPresentationController *ppc = dvc.popoverPresentationController; 
     if (ppc) { 
      ppc.delegate = self; 
     } 
    } 

을 그리고 단계 위 아래이 추가 :

은 다음과 같이 수행

가로 모드
- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller { 

    return UIModalPresentationNone; 
} 
+0

뿐만 아니라 크기가 180x128 – Roger

+0

남아 무슨 일이 --- DVC 사용 후받은 오류입니다. preferredContentSize = [self.tableView sizeThatFits : self.presentingViewController.view.bounds.size]; --- 대신 dvc.preferredContentSize = CGSizeMake (180,128); –

+0

보기를 가로로 변경하면보기가 전체 화면을 덮는 높이로 유지되므로 UI가 여전히 숨겨집니다. – Roger

관련 문제