gpt4 book ai didi

swift - Segue 到不同 UINavigationController 中的 UIViewController

转载 作者:行者123 更新时间:2023-11-30 13:52:56 25 4
gpt4 key购买 nike

我有以下设置:

enter image description here

我有一个嵌入在 UINavigationController 中的 UIViewController。我在第二个 UINavigationController 中嵌入了第二个 UIViewController。我需要以两种方式调用第二个 UIViewController 。我在第一个 UIViewController 上设置了两个按钮。第一个按钮有一个通过在按钮和第二个 UINavigationController 之间按住 Control 单击并拖动创建的 Segue。当我单击该按钮时,将显示第二个 View Controller 。第二个按钮使用 performSegueWithIdentifier 调用创建的 segue,如下所示:

@IBAction func segueTwoButton(sender: AnyObject) {
performSegueWithIdentifier("ShowSecondView", sender: self)
}

在这两种情况下,第二个 View Controller 都能正确显示。

但是,我有一些信息想要传递。所以在 prepareForSegue 函数中,我有这个:

let vc = segue.destinationViewController as! SecondViewController

这会失败,因为 segue 正在通过第二个 UINavigationController 到达第二个 UIViewController

我想出了两种处理这个问题的方法。

  1. 我可以在 prepareForSegue 中使用以下内容 让 vc = segue.destinationViewController.childViewControllers[0] 作为! SecondViewController

  2. 我可以添加一个 UINavigationController 类,然后通过管道将其通过那里,但这似乎需要大量工作。

这两种方法都有效,但这是最好的方法,还是我应该考虑处理它的其他方法?

第二个问题 - 假设我这样做并放入 UINavigationController 类以便我可以传递信息,那么正确的放松方法是什么?我可以创建一个展开转场,它将直接从第二个 View Controller 返回到第一个 View Controller ,但是这样做可以接受吗?或者我需要展开到 UINavigationController 类,然后展开到第一个 View Controller ?

最佳答案

我不确定您为什么决定在另一个导航 Controller 中嵌入另一个导航 Controller 。一般来说,如果您嵌入一次导航 Controller ,那么在您设置其他 Segue 后就足够了。所以第一件事就是删除第二个导航 Controller 。

其次,根据经验,我总是会避免从 View Controller 本身以外的任何其他地方拖动控件。否则,您会收到重复的调用来执行 segue。因此,请继续删除您之前使用按钮创建的 Segue 的所有残留内容。相反,控制从顶部黄色 View Controller 图标拖动到下一个 View Controller 。确保您命名了 segue 箭头,以便可以正确执行segueWithIdentifier

现在您应该将第一个 View 直接连接到第二个 View 。这将更容易通过 segue 函数传递或收集信息,就像您上面编码的那样

   let vc = segue.destinationViewController as! SecondViewController

关于swift - Segue 到不同 UINavigationController 中的 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34035248/

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