无法在UIPopover的UINavigationController侧调整UIViewController的高度contentSizeForViewInPopover

LE *_*ANG 5 uinavigationcontroller ios uipopover

我用UINavigationController里面UIPopoverController

-(void)showEditMenuFrom:(UIButton *)button{
    if (self.popover) {
        [self.popover dismissPopoverAnimated:YES];
        self.popover = nil;
    }
    else {
        EditMenuViewController *editMenuViewController = [[EditMenuViewController alloc] initWithNibName:@"EditMenuViewController" bundle:nil];

        UINavigationController *actionsNavigationController = [[UINavigationController alloc] initWithRootViewController:editMenuViewController];
        actionsNavigationController.delegate = self;

        // switch for iPhone and iPad.
        if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {
            self.popover = [[UIPopoverController alloc] initWithContentViewController:actionsNavigationController];
            self.popover.delegate = self;
            //            CGRect presentFrame = CGRectMake(button.frame.origin.x-43, button.frame.origin.y-10, button.frame.size.width, button.frame.size.height);
            [self.popover presentPopoverFromRect:button.frame inView:button permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
        } else {
            [self presentViewController:actionsNavigationController animated:YES completion:^{
                NSLog(@"Activity complete");
            }];
        }
    }

    }
Run Code Online (Sandbox Code Playgroud)

我尝试UIPopover在导航时调整内部视图,这些是结果:

  1. 根视图:

在此输入图像描述

2.推向其他VC

在此输入图像描述

3.回到:

在此输入图像描述

您可以看到根VC的高度无法更改回原点大小.

我尝试设置contentSizeForViewInPopoverviewDidAppear,viewDidLoadUINavigationControllerDelegate却没有方法的工作

-(void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    NSLog(@"Show VIEW %@",viewController);
    if ([viewController isKindOfClass:[EditMenuViewController class]]) {
        viewController.contentSizeForViewInPopover = CGSizeMake(160.0, 160.0);
    } else {
        viewController.contentSizeForViewInPopover = CGSizeMake(320.0, 320.0);
    }
}
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题呢?谢谢!

LE *_*ANG 2

我最终向遇到此解决方案的人提出了我的问题:

首先,你需要在VC中声明一个@property,它会弹出到堆栈上

@property (nonatomic, strong) UIPopoverController *popover;
Run Code Online (Sandbox Code Playgroud)

然后将其分配给主代码中的UIPopoverController

self.popover = [[UIPopoverController alloc] initWithContentViewController:actionsNavigationController];
self.popover.delegate = self;

editMenuViewController.popover = self.popover;
Run Code Online (Sandbox Code Playgroud)

最后,在 VC 的 viewWillAppear 中设置要调整大小的大小

-(void)viewWillAppear:(BOOL)animated
{
    [self.popover setPopoverContentSize:CGSizeMake(160,160)];
    self.contentSizeForViewInPopover = CGSizeMake(160,160);
    [super viewWillAppear:animated];
}
Run Code Online (Sandbox Code Playgroud)