1

我有一个 UIPopoverController。我在其中放置了一个带有两个 UITableViewcontroller 的 UINavigationController。

我创建了一个子类 UITableView,我可以设置弹出框的大小tableView.contentSizeForViewInPopover

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 中:

- (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:计算在表格视图中显示所有单元格所需的高度

所以对于根tableViewController,我设置了内容大小。当我创建详细视图控制器时,我将其设置contentSizeForViewInPopover为不同的大小。这很好用。我遇到的问题是当我导航回根表视图时,contentSizeForViewInPopover仍然为详细表视图设置。

当表格视图显示或出现时,如何调整弹出框的大小?

4

2 回答 2

4

尝试使用preferredContentSize而不是contentSizeForViewInPopover在您的tableViewControllercontentSizeForViewInPopover在 iOS7 上已弃用)

于 2014-02-13T11:17:39.177 回答
0

您应该popoverContentSize直接在父视图控制器的 viewWillAppear 方法中设置 UIPopoverController(或其他适当的位置)。无论您想在哪里强制更新弹出框的内容大小。

于 2013-03-20T20:12:17.747 回答