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在导航时调整内部视图,这些是结果:

2.推向其他VC

3.回到:

我尝试设置contentSizeForViewInPopover的viewDidAppear,viewDidLoad并UINavigationControllerDelegate却没有方法的工作
-(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)
我最终向遇到此解决方案的人提出了我的问题:
首先,你需要在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)
| 归档时间: |
|
| 查看次数: |
2768 次 |
| 最近记录: |