gpt4 book ai didi

ios - 移动到另一个 ViewController

转载 作者:搜寻专家 更新时间:2023-11-01 05:46:46 24 4
gpt4 key购买 nike

我使用 StoryBoard,我不太确定如何实例化 ViewController 或如何引用一个。

问题是我有两个 View Controller ,一个带有按钮。当我按下第一个 View Controller 的按钮时,我想转到另一个 View Controller 。

我尝试过这样的事情:

let secondViewController:UIViewController = UIViewController()
self.presentViewController(secondViewController, animated: true, completion: nil)

有谁知道如何向我解释?谢谢!

最佳答案

有几种在 View Controller 之间导航的方法。如果你要那样做,这里是你如何在没有 segue 的代码中做到这一点。

以模态方式呈现 View Controller 。

假设 Storyboard中有 2 个 View Controller 场景,FirstViewControllerSecondViewController .您要从FirstViewController过境至 SecondViewController他们之间没有segue。

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let secondViewController = storyboard.instantiateViewControllerWithIdentifier("SecondVC") as UIViewController
presentViewController(secondViewController, animated: true, completion: nil)

重要的部分是你必须为你想要去的 View Controller 分配一个标识符。在这种情况下,它是 SecondViewController .分配标识符的方法是选择 View Controller ,打开右侧面板,然后转到 身份检查员 (左起第三个)在 Identity 下,为 分配一个标识符 Storyboard ID field 。我把我的设为 SecondVC从上面的代码片段可以看出。

推送到另一个 View Controller 。

如果你想推送到另一个 View Controller 而不是呈现它,你所要做的就是嵌入 FirstViewControllerUINavigationController并将代码更改为此。
let storyboard = UIStoryboard(name: "Main", bundle: nil)
let secondViewController = storyboard.instantiateViewControllerWithIdentifier("SecondVC") as UIViewController
navigationController?.pushViewController(secondViewController, animated: true)

在您的评论中,我看到您想根据条件转到下一个 View Controller 。那么您所要做的就是在 if else 中检查您的状况。语句并执行上述代码之一。

使用 Segue。

如果您打算使用 segues 而不是代码,这里是您的操作方法。

首先在 Storyboard 中选择按钮并按住 Ctrl 键拖动到另一个 View Controller 。系统会提示您在不同的转场之间进行选择。选择 show用于推送或 show detail用于模态转换(我已经解释了下面的内容)。就是这样!如果你运行它并点击按钮,你会被带到另一个 View Controller 。

但是如果你想要更多地控制它,你必须做更多的工作......而不是直接从按钮创建一个segue,选择你的 View Controller 并选择顶部的那个小黄色图标(这是在Xcode 6中。在旧的Xcode 版本在 View Controller 场景下)。按住 Ctrl 键从该图标拖动到您要转换到的另一个 View Controller 。您可以看到这两个 Controller 之间出现连接。选择 segue 并打开右侧面板并转到 属性检查器 (左起第四个)。为字段命名 标识符 .我给了 ToSecond .

现在从按钮创建一个正常的 Action 。你必须调用一个名为 performSegueWithIdentifier 的方法传递那个标识符。它所做的基本上是使用我们提供的标识符执行一个 segue。
@IBAction func segueButtonPressed(sender: UIButton) {
performSegueWithIdentifier("ToSecond", sender: nil)
}

这会奏效。您可以在 if else 中进行条件检查。如果满足条件,请调用 performSegueWithIdentifier .

您可能会遇到的另一件事是在一个 View Controller 中有多个按钮,并在您点击每个按钮时切换到不同的 View Controller 。一个名为 prepareForSegue 的方法每次发生 segue 时都会触发。在其中,您可以检查当前的 segue 标识符并执行它。下面的代码片段将使这更清楚。
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "ToSecond" {
let secondViewController = segue.destinationViewController as SecondViewController
}
}

我想提的另一件事是 presentViewControllerpushViewController已从 iOS8 弃用。相反,您可以使用 showDetailViewController用于模态和 showViewController推。
showDetailViewController(secondViewController, sender: nil)

navigationController?.showViewController(secondViewController, sender: nil)

我不确定这些是否向后兼容。使用 show 的含义和 show detail如果您也在为 iOS 7 开发,也可以使用。如果你是,那么就坚持使用旧的方法。

关于ios - 移动到另一个 ViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26189588/

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