【问题标题】:Show UIViewController with Navigation Controller from a Modal opened one从打开的模态显示带有导航控制器的 UIViewController
【发布时间】:2016-08-16 13:42:24
【问题描述】:

我想打开一个从右侧显示的视图控制器,并从模态打开的视图控制器中打开正确的导航控制器。

如图所示,视图控制器 1 以模态方式打开,现在我想使用导航控制器从右侧打开视图控制器 2...

有可能吗?

编辑:具有相应转场的图像

【问题讨论】:

  • 当然有可能。您在情节提要中的方式是正确的。问题是什么?你试过了吗?
  • 是的,我试过了,第二个视图控制器也是模态呈现的,不管我设置什么样的呈现
  • 我不确定我是否理解。 #1 以模态方式呈现。您想在 #1 之上以模态方式呈现导航控制器(以 #2 为根)吗?
  • 这正是我想要做的
  • 请记住,您正在以模态方式呈现导航控制器。除非 1 嵌入到导航控制器中,否则您无法更改此设置。您是否正在研究没有导航控制器的自定义推送动画。所以尽管您以模态方式呈现它,但 2 看起来像推送动画?

标签: ios objective-c iphone uiviewcontroller uinavigationcontroller


【解决方案1】:

它非常简单。

当“1”以模态方式呈现时,它不是导航堆栈的一部分,或者没有附加导航控制器。

因此,您不能从“1”“推送”。

解决方案是 --> 将“1”嵌入到导航控制器中。

无论谁以模态方式打开“1”,使其打开navigationController以模态方式打开。

然后,如果您愿意,可以使用隐藏导航栏

[self.navigationController setNavigationBarHidden:YES];

为了以防万一,您从调用者向“1”传递参数,请使用

  UINavigationController * navigationController =  segue.destinationviewController;
    //OR
    UINavigationController * navigationController =  [storyboard instantiateViewControllerWithIdentifier:@"NavController"];

    OneViewController *controller =    [navigationController.viewControllers objectAtIndex:0];

【讨论】:

  • “嵌入到导航控制器中”到底是什么意思?在 1 视图控制器之前添加一个 navigationController 并将 1 作为 rootViewcontroller?我问是因为我已经这样做了但它不起作用,2 视图控制器仍然以模态方式打开
  • 你可能错过了一些东西。您将 NavigationController 作为模态打开,而不是“1”
猜你喜欢
  • 2016-09-01
  • 2011-03-29
  • 1970-01-01
  • 1970-01-01
  • 2011-10-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多