我有两个 View Controller 。在 View Controller 1 上,我有以下内容:
- 将我带到 viewcontroller2 的 segue - 这个 segue 被命名为“showme”并附加到 viewcontroller
- UIButton 的 IBAction
在我的代码中,我有以下按钮按下操作
@IBAction func buttonPress(sender: AnyObject) {
println("button pressed")
performSegueWithIdentifier("showme", sender: self)
}
我还有以下方法:
override func shouldPerformSegueWithIdentifier(identifier: String?, sender: AnyObject?) -> Bool {
println("Should performing....")
return true
}
出于某种原因,从未调用 shouldPerformSegueWithIdentifier 函数。但是,如果我直接在 UIButton 上将 segue 添加到 ViewController2。
我已经确认在我的按钮操作中调用方向是有效的(见下文),但这不是我所理解的它的工作方式。 prepareforSegue 也是如此..
@IBAction func buttonPress(sender: AnyObject) {
println("button pressed")
if (shouldPerformSegueWithIdentifier("showme", sender: self)){
performSegueWithIdentifier("showme", sender: self)}
}
最佳答案
这种行为是完全自然的,原因如下:
1) shouldPerformSegueWithIdentifier
用于确保在Storyboards 中设置的 segue 应该被触发,所以它只在这种情况下被调用Storyboard Segues 并让您有机会不实际执行 segue。
2) 当您自己调用 performSegueWithIdentifier
时,shouldPerformSegueWithIdentifier
不会被调用,因为可以假设您知道自己在做什么。调用 performSegueWithIdentifier
是没有意义的,但随后从 shouldPerformSegueWithIdentifier
返回一个 NO
。
关于ios - 调用 performSeguewithIdentifier 不会调用 shouldperformseguewithIdentifier,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26946566/