【问题标题】:Bottom Bar Items not appearing in presentViewController底栏项目未出现在 presentViewController 中
【发布时间】:2014-10-26 01:42:25
【问题描述】:

在我的应用程序中,我动态加载一组图像,当用户点击图像时,它会打开一个新的 ViewController (MediaPreview),它会打开图像的大预览。

我按如下方式创建 MediaPreview 控制器:

UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
mediaPreviewVC = (MediaPreviewViewController *)[storyboard instantiateViewControllerWithIdentifier:@"MediaPreviewViewController"];
mediaPreviewVC.selectedImageURL = [NSString stringWithFormat:@"%@",gestureRecognizer.view.tag];
navigationController = [[UINavigationController alloc] initWithRootViewController:mediaPreviewVC];
[self presentViewController:navigationController animated:YES completion:nil];

这将创建一个如下所示的 ViewController:

但是,底部导航栏似乎不见了,这在我的故事板中有所概述:

如何确保底部导航栏按钮出现在我的视图中?

【问题讨论】:

  • Hide Bottom Bar on PushMediaPreviewVC 的状态如何?
  • hide bottom bar on push 被取消选择

标签: ios iphone uiviewcontroller storyboard presentviewcontroller


【解决方案1】:

您正在用整块布料创建导航控制器:

navigationController = [[UINavigationController alloc] initWithRootViewController:mediaPreviewVC];

alloc-init 的意思是“让我成为一个全新的、独立的、通用的”。因此,navigationController 不是故事板中的导航控制器。这是一个全新的和不同的导航控制器。因此,故事板中的内容无关紧要。

如果您想要来自情节提要的导航控制器,则需要从情节提要中实例化导航控制器。或者,如果您有意这样做,则底部栏将不可见,除非您明确使其可见,因为默认情况下它不可见(很明显如何make it visible explicitly)。

但是在这种情况下,如果您打算将其从情节提要中拉出,那么您的 整个 代码可能是错误的,因为情节提要中的代码可能已经具有正确的根视图控制器好吧。

【讨论】:

  • 感谢您的回复。如果我创建了一个新的导航控制器,为什么我在情节提要中定义的控制器的标题(图像预览)在应用程序中仍然可见?我不知道是否可以从情节提要创建导航控制器,因为我以编程方式生成图像缩略图(它们没有在我的情节提要中定义)。所以我不知道如何为情节提要中不存在的东西添加转场。
  • 哇,正如您所提到的,除非明确说明,否则底部栏是不可见的。添加后:[self.navigationController setToolbarHidden:NO animated:NO];问题已解决。
  • 如果回答了您的问题,您不妨接受我的回答。 - 我不明白你的其他评论是什么意思;没有必要“为情节提要中不存在的东西添加转场”。如果您在展示导航控制器时无法理解如何以编程方式放置图像缩略图,您可能需要提出一个单独的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-08-07
  • 1970-01-01
  • 2017-07-29
  • 2013-10-01
  • 2018-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多