UINavigationController 在 UIPopOverController 中不起作用

Posted

技术标签:

【中文标题】UINavigationController 在 UIPopOverController 中不起作用【英文标题】:UINavigationController not working in UIPopOverController 【发布时间】:2013-03-29 06:32:06 【问题描述】:

在我的 Ipad 应用程序 (ios6) 中,我正在处理 UIPopOverController。在UIPopOverController 我正在展示相机。我的要求是当我按下相机捕捉按钮时,它会推送到另一个视图控制器。在那个视图控制器中,我想显示从相机拍摄的图像。

我正在使用此代码:

ImageCropViewController *cropViewController = [[ImageCropViewController alloc]initWithNibName:@"ImageCropViewController" bundle:nil];
cropViewController.sourceImage = image;

UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:cropViewController];


[self.navigationController presentViewController:navController animated:YES completion:nil];

我已经尝试了很多并用谷歌搜索,但我没有找到任何解决方案。它正在消磨我的时间,所以如果有人对此进行了研究,请指导我并发布示例代码。

【问题讨论】:

您要推送还是展示?另外你在哪里使用 UIPopoverController ? 我要推。@Flappy 【参考方案1】:

终于找到了解决办法:

ImageCropViewController *cropViewController = [[ImageCropViewController alloc]initWithNibName:@"ImageCropViewController" bundle:nil];
cropViewController.sourceImage = image;
[self.navigationController pushViewController:cropViewController animated:YES];

我在ImageCropViewControllerViewWillAppear写了下面的代码

self.contentSizeForViewInPopover = CGSizeMake(450, 350);

【讨论】:

【参考方案2】:

我认为您的self.navigationControllernil。您创建导航控制器,但将其用作裁剪器控制器的包装器。例如:

  //in AppDelegate
  SomeController *controller = [SomeController alloc] init];
  UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:controller];
 self.window.rootViewController = controller;
 [self.window makeKeyAndVisible];

 // later
 // asume that self is SomeController
 ImageCropViewController *cropViewController = [[ImageCropViewController alloc]initWithNibName:@"ImageCropViewController" bundle:nil];
  cropViewController.sourceImage = image;

  UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:cropViewController];


  [self.navigationController presentViewController:navController animated:YES completion:nil];  // now it will be work

UPD:我第一次没有看到你使用UIPopOverController,所以它可能不起作用。但是UIPopOverController 没有 navigationController 属性。

【讨论】:

以上是关于UINavigationController 在 UIPopOverController 中不起作用的主要内容,如果未能解决你的问题,请参考以下文章

在 UINavigationController 内的 UITabBarcontroller 中添加 UINavigationController?

从嵌入在 UINavigationController 中的一个视图控制器到另一个 UINavigationController

(Swift) 在嵌套在 Main UINavigationController 中的 UINavigationController 和 UITabController 之间切换

关闭 UINavigationController 并呈现另一个 UINavigationController

带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller

UINavigationController 标题和按钮