gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 04:44:15 25 4
gpt4 key购买 nike

我在 UIPopoverController 中使用 UINavigationController

-(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");
}];
}
}

}

我尝试在导航时调整 UIPopover 内的 View 大小,结果如下:

  1. Root View :

enter image description here

2.推送给其他VC

enter image description here

3.弹回:

enter image description here

可以看到根VC的高度无法变回原来的大小。

我尝试在 viewDidAppearviewDidLoadUINavigationControllerDelegate 中设置 contentSizeForViewInPopover 但没有任何方法有效

-(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);
}
}

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

最佳答案

我结束了我的问题,有人遇到了这个解决方案:

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

@property (nonatomic, strong) UIPopoverController *popover;

然后在主代码中赋值给UIPopoverController

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

editMenuViewController.popover = self.popover;

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

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

关于ios - 无法在 UIPopover 的 UINavigationController 侧调整 UIViewController 的高度 contentSizeForViewInPopover,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17943731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com