ios - 从一个 UIButton 创建多个 segues 到同一个 View Controller 或另一个

标签 ios swift uiviewcontroller uibutton segue

我是 swift 的新手,所以请多多包涵。

现在我的问题可以分解为:

我有一个测试 View Controller ,它可以通过显示描述和标题来显示我的“测试”对象。我还有一组测试对象。在右上角,有一个“跳过这个测试”按钮,如果用户点击它,viewcontroller 将继续自己,但改变正在显示的测试对象,例如它只是基本上循环通过一系列测试。我相应地更改了 prepare for segue 方法,以通过 View Controller 推送数据。

但是,如果我已经到达我的测试数组中的最后一个测试,我希望能够移动到一个完全不同的 ViewController(我们就称它为 FinalViewController)。

现在这是我无法修复的部分。

我想直接从“跳过测试”按钮创建一个转场,只是它会根据特定条件转场到不同的 View Controller 。但是,当我尝试通过右键单击 Button 并将其拉到 FinalViewController 在 IB 中创建一个 segue 时,它​​删除了我之前为该按钮设置的 segue。

有人知道这个问题是否有解决办法吗?谢谢你!!!!

最佳答案

However, as i tried creating a segue in IB by right clicking on the Button and pulling it to the FinalViewController, it erased my previous segue I had for that button

实际上,您不想这样做,相反,您应该从 Controller 本身拖动,而不是从按钮拖动,因为如果您的 segue 是基于按钮创建的,点击它应该总是执行它,这是不是你想要的。

从 ViewController 创建一个 segue 之后,您可以 - 以编程方式 - 调用 performSegue方法并通过实现 prepareForSegue 处理应将哪些数据传递给下一个 viewController方法。

更多信息,查看my answer了解如何使用标识符创建多个 segue 并使用它们。


编辑:

如果你想推送到相同的当前 ViewController,performSegue 方法将不是最佳解决方案。您应该改为推送/呈现给它自己的同一个 ViewController:

class ViewController: UIViewController {
    var myString: String?

    override func viewDidLoad() {
        super.viewDidLoad()

        // here we go
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let sameViewController = storyboard.instantiateViewControllerWithIdentifier("ViewControllerStoryboardID") as! ViewController
        sameViewController.myString = "the value of the new myString"
        navigationController?.pushViewController(sameViewController, animated: true)

        print(myString)
    }
}

您可能不想在 viewDidLoad 中实现它,它只是为了演示目的。

确保 ViewController 有 Storyboard ID(在代码片段中,我假设它是“ViewControllerStoryboardID”):

enter image description here

关于ios - 从一个 UIButton 创建多个 segues 到同一个 View Controller 或另一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40832724/

相关文章:

swift - 如何将实例方法连接到我的对象

ios - 在半尺寸父 Controller 中呈现模态视图 Controller

ios - 在 CGContext 中定位预制的 CGPath

ios - 语义问题太多。 Xcode 8.2.1

iphone - Objective-c 如何在 GMT 时区获取没有时间分量的日期?

ios - 如何减小 Xamarin.iOS 中内置的 iOS 游戏和应用的大小?

swift - 在 swift 中的选项中隐藏 ECSlidingViewController 中的菜单栏

ios - 如何访问扩展类中自定义单元格的文本字段?

ios - 为什么 ViewController 实例的 View 仍在另一个 View 的 subview 列表中时被释放?

ios - 在 Swift 中检查 UIContentContainer 是否为 ViewContoller