1

UIPopoverController があります。2 つの UITableViewcontrollers を含む 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

0

popoverContentSize親View Controller(または他の適切な場所)のviewWillAppearメソッドで直接UIPopoverControllerを設定する必要があります。ポップオーバーのコンテンツ サイズを強制的に更新したい場所。

于 2013-03-20T20:12:17.747 に答える