我是新手,所以请耐心等待。
现在,我的问题可以分解为:
我有一个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 创建多个选择,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40832724/