为什么故事板弹出窗口 segue 出现在导航控制器内的后续视图中
Why is a storyboard popover segue appearing on a subsequent view within a navigation controller
这很奇怪,但我会尽力解释。
我有一个有视图的导航控制器。该视图提出了一个简单的问题。然后该视图有两个可用的 segues——一个在正确答案的视图上,它是导航控制器上的 "show",另一个在不正确的答案上,它是 "popover".
segue 分别绑定到显示和弹出窗口的视图和答案框。
我正在测试按下按钮时的答案,然后使用 performSegueWithIdentifier 显示适当的 window。
if (answerField.text == "2") {
println("Correct")
performSegueWithIdentifier("Correct", sender: sender)
} else {
println("Incorrect")
performSegueWithIdentifier("Error", sender: sender)
}
我遇到的问题是,如果我得到正确的答案,它会很好地移动到下一个视图,但它会在转到正确的视图后显示 "incorrect" 弹出视图。
我知道这听起来很复杂,但它目前是一个超级简单的应用程序。我怀疑我只是做错了。值得注意的是,我还收到一个可能相关的错误 "Presenting view controllers on detached view controllers is discouraged"。
非常感谢任何人可以提供的任何帮助。
D.
听起来你有一个或两个 segues 直接连接到故事板中的按钮,即使你没有在代码中调用 performSegueWithIdentifier(_:)
,这也会在按下按钮时自动触发 segues .然后,您将设置一个 IBAction
方法,该方法在按下按钮时被 也 调用,然后您以编程方式再次执行 segue .
您可以转到故事板并 select 按下按钮来检查这一点。转到右侧的连接检查器,我希望您会看到一个 Triggered Segues
部分,其中 "action" 触发您的 "show" segue。您可以通过单击连接旁边的叉号来删除它。
对于应该以编程方式启动的转场,您应该通过从视图控制器对象(而不是从控件/可操作元素)拖动到下一个视图控制器来创建转场。这将创建一个仅由代码中的 performSegueWithIdentifier(_:)
触发的通用 segue。
正如您所注意到的,由于您的 segue 是针对弹出窗口演示文稿的,因此除非它明确锚定到故事板中的特定视图,否则它会报错。您仍然可以将 segue 从 view controller 对象拖到 popover view controller,但是您必须手动挂钩锚点:select storyboard 中的 segue,选择右边的 attributes inspector,从圆圈中拖出在 "Anchor" 字段中添加到您要锚定的文本字段。
这很奇怪,但我会尽力解释。
我有一个有视图的导航控制器。该视图提出了一个简单的问题。然后该视图有两个可用的 segues——一个在正确答案的视图上,它是导航控制器上的 "show",另一个在不正确的答案上,它是 "popover".
segue 分别绑定到显示和弹出窗口的视图和答案框。
我正在测试按下按钮时的答案,然后使用 performSegueWithIdentifier 显示适当的 window。
if (answerField.text == "2") {
println("Correct")
performSegueWithIdentifier("Correct", sender: sender)
} else {
println("Incorrect")
performSegueWithIdentifier("Error", sender: sender)
}
我遇到的问题是,如果我得到正确的答案,它会很好地移动到下一个视图,但它会在转到正确的视图后显示 "incorrect" 弹出视图。
我知道这听起来很复杂,但它目前是一个超级简单的应用程序。我怀疑我只是做错了。值得注意的是,我还收到一个可能相关的错误 "Presenting view controllers on detached view controllers is discouraged"。
非常感谢任何人可以提供的任何帮助。 D.
听起来你有一个或两个 segues 直接连接到故事板中的按钮,即使你没有在代码中调用 performSegueWithIdentifier(_:)
,这也会在按下按钮时自动触发 segues .然后,您将设置一个 IBAction
方法,该方法在按下按钮时被 也 调用,然后您以编程方式再次执行 segue .
您可以转到故事板并 select 按下按钮来检查这一点。转到右侧的连接检查器,我希望您会看到一个 Triggered Segues
部分,其中 "action" 触发您的 "show" segue。您可以通过单击连接旁边的叉号来删除它。
对于应该以编程方式启动的转场,您应该通过从视图控制器对象(而不是从控件/可操作元素)拖动到下一个视图控制器来创建转场。这将创建一个仅由代码中的 performSegueWithIdentifier(_:)
触发的通用 segue。
正如您所注意到的,由于您的 segue 是针对弹出窗口演示文稿的,因此除非它明确锚定到故事板中的特定视图,否则它会报错。您仍然可以将 segue 从 view controller 对象拖到 popover view controller,但是您必须手动挂钩锚点:select storyboard 中的 segue,选择右边的 attributes inspector,从圆圈中拖出在 "Anchor" 字段中添加到您要锚定的文本字段。