2013-03-20 3 views
1

나는 UIPopoverController가 있습니다. UITableViewControllers 두 UINavigationController 넣어.크기 조정 UIPopoverController

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    DetailedTableViewController *tableViewController = [[DetailedTableViewController alloc] initWithStyle:UITableViewStyleGrouped]; 
    tableViewController.contentSizeForViewInPopover = CGSizeMake(POPOVER_SIZE.width, [self createContentHeighForTableViewController:tableViewController]); 
    tableViewController.delegate = self.boundaryDelegate; 

    [self.navigationController pushViewController:tableViewController animated:TRUE]; 
} 

createContentHeightForTableViewController:가 표시하는 데 필요한 높이를 계산합니다

if (self.myPopoverController.isPopoverVisible) 
{ 
    [self.myPopoverController dismissPopoverAnimated:YES]; 
} 
else 
{ 
    MyRootTableView *rootTableView = [[MyRootTableView alloc]initWithStyle:UITableViewStyleGrouped]; 
    MyRootTableView.contentSizeForViewInPopover = CGSizeMake(POPOVER_SIZE.width, [self createContentHeighForTableViewController:tableView]); 
    MyRootTableView.boundaryDelegate = self; 

    UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:tableViewController]; 
    navController.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    navController.navigationBar.barStyle = UIBarStyleBlack; 

    self.myPopoverController = [[UIPopoverController alloc] initWithContentViewController:navController]; 
    self.myPopoverController.delegate = self; 

    [self.myPopoverController presentPopoverFromRect:frame inView:view permittedArrowDirections:arrowDirection animated:YES]; 
} 

을 rootTableViewController의 didSelectRowAtIndexPath에서 :

은 내가 tableView.contentSizeForViewInPopover과 팝 오버의 크기를 설정할 수있어, 서브 클래 싱 된 jQuery과 작성 테이블보기의 모든 셀

그래서 root tableViewController의 경우 conten을 설정합니다. t 크기. 상세보기 컨트롤러를 만들 때 contentSizeForViewInPopover을 다른 크기로 설정합니다. 이것은 잘 작동합니다. 내가 가지고있는 문제는 루트 테이블 뷰로 다시 돌아갈 때, contentSizeForViewInPopover이 여전히 세부 테이블 뷰로 설정되어있는 경우입니다.

테이블보기가 표시되거나 나타나면 팝 오버의 크기를 조정할 수 있습니까?

+0

더 많은 코드 .. –

+0

좋아, 게시 된 모든 코드를 붙여주십시오 tableViewController (contentSizeForViewInPopover이 iOS7에에 사용되지 않습니다) 당신에 preferredContentSize 대신 contentSizeForViewInPopover를 사용해보십시오. – Padin215

답변

0

부모보기 컨트롤러 (또는 다른 적절한 장소)의 viewWillAppear 메서드에서 UIPopoverController에 직접 popoverContentSize을 설정해야합니다. popover의 콘텐츠 크기를 강제로 업데이트하려는 경우.

+0

그래서 테이블보기에서보기에 콘텐츠 크기를 설정합니까? 그 재산에 어떻게 가야합니까? tableViewController의 – Padin215

+0

에는'setContentSizeForViewInPopover :'속성이 있습니다. UIPopoverController의 크기를 조정하지는 않습니다. – Padin215

+0

게시 한 코드에 문제가 있습니다. 나는 UITableViewController "boundaryDelegate"속성을 가지고 있다고 생각하지 않지만 어쩌면 당신은 자신의 하위 클래스 인 myPopoverController를 소유하고있는 것을 참조하는 UITableViewController를 가지고있다. 멋지네요 - 당신의 UITableViewController 서브 클래스가 viewWillAppear를 오버라이드하고'self.whateverOwnsMyPopoverController.myPopoverController setPopoverContentSize : <무엇이든 좋아해요> 애니메이션 : <가장 좋아할 것 같지 않습니다.>; ' –

3

관련 문제