gpt4 book ai didi

iphone - instantiateViewControllerWithIdentifier 破坏了 UINavigationController 流程

转载 作者:行者123 更新时间:2023-11-30 10:03:38 24 4
gpt4 key购买 nike

我有一个 UIViewController (带有隐藏的 UINavigationController),其中包含一个 UIButton。单击该按钮会在另一个 UIViewController 上调用 instantiateViewControllerWithIdentifier (并向第二个 UIViewController 传递一些数据)。

尽我所能,我无法让第二个 UIViewController 显示其 UINavigationController 导航栏,即使我将其嵌入到 UINavigationController 中。不过,这并不是一场灾难,因为我其实并不希望它在那里,所以我会简单地将它隐藏起来。我向第二个 UIViewController 添加了一个 UIButton,并在 Interface Builder 中按住 Control 键并单击拖动,以将“Show”segue 添加回第一个 UIViewController。

但是现在,当您访问任何其他 UIViewController(并且执行上述步骤之后)时,UINavigationBar 会丢失。

这是我加载第二个 UIViewController 的方法:

let destinationViewController = self.storyboard?.instantiateViewControllerWithIdentifier("viewGold") as! SecondViewController
destinationViewController.results = result
self.presentViewController(destinationViewController, animated: true, completion: nil)

所以:

  1. 不想在两个 UIViewController 上显示 UINavigationBar 是不是很糟糕?
  2. 我是否正确加载 SecondViewController?
  3. 有没有办法在 SecondViewController 的 UIButton 单击中模拟单击“后退”UINavigationBar?

最佳答案

所以 self.presentViewController 是一个模态演示,这意味着它不包含在 UINavigationController 的导航堆栈中,因此不会显示导航栏。您在这里展示了正确的方式。

问题在于您从第二个 View Controller 到第一个 View Controller 的转场。 Show segue 实际上创建了一个新的 View Controller 并以模态方式呈现它,这绝对不是您想要的(特别是因为它创建您的第一个 View Controller 没有它的导航 Controller )。相反,使用 self.presentingViewController.dismissViewControllerAnimated 来以模式方式关闭。

以模态方式呈现并不提供与沿着导航堆栈移动相同类型的过渡,这意味着您不会获得左/右过渡。一般来说,如果您想像这样进行导航,我建议保持导航栏可见并在导航堆栈上工作。

For reference, look at Apple's documentation on segues!

关于iphone - instantiateViewControllerWithIdentifier 破坏了 UINavigationController 流程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37198282/

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