我是新手,所以请耐心等待。

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

我有一个Test View Controller,它可以通过显示说明和标题来显示“Test”对象。我也有一组Test对象。在右上角,有一个“跳过此测试”按钮,如果用户单击它,则视图控制器将自动搜索自身,但更改正在显示的“测试”对象,例如它基本上只是遍历一系列测试。我已经相应地更改了segue方法的准备工作,以通过视图控制器推送数据。

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

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

我想直接从“跳过测试”按钮创建一个segue,只是根据特定条件将其segue到另一个视图控制器。但是,当我尝试通过右键单击Button并将其拉到FinalViewController来在IB中创建序列时,它消除了我对该按钮的先前序列。

有人知道是否有解决此问题的方法吗?谢谢!!!!

最佳答案

但是,当我尝试通过右键单击IB在IB中创建序列时
按钮并将其拉到FinalViewController,它清除了我的
我之前对那个按钮的看法

实际上,您不想这样做,而应该从控制器本身而不是按钮上拖动,因为如果您的segue是基于按钮创建的,则点击它应该始终执行它,而这不是您要做的想。

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

有关更多信息,请检查my answer以了解如何使用标识符创建多个序列并使用它们。

编辑:

如果要推送到相同的当前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具有情节提要ID(在代码段中,我假设它是“ViewControllerStoryboardID”):

ios - 从一个UIButton到同一个 View  Controller 或另一个 View  Controller 创建多个选择-LMLPHP

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

10-14 21:28
查看更多