这很奇怪,但我会尽力解释一下。
我有一个有视图的导航控制器。该观点提出了一个简单的问题。那个视图有两个可用的段 - 一个在正确答案的视图上,这是导航控制器上的“显示”,另一个是错误的答案,这是一个“弹出”。
segue分别与show和popover的视图和答案框相关联。
我正在按下按钮并使用performSegueWithIdentifier测试答案,然后显示相应的窗口。
if (answerField.text == "2") {
println("Correct")
performSegueWithIdentifier("Correct", sender: sender)
} else {
println("Incorrect")
performSegueWithIdentifier("Error", sender: sender)
}
我遇到的问题是,如果我得到的答案是正确的,它会移动到下一个视图,但是在显示正确的视图后会显示“不正确”的弹出视图。
我知道这听起来很复杂,但目前这是一个超级简单的应用程序。我怀疑我做错了。值得注意的是,我也得到一个错误“不鼓励在分离的视图控制器上呈现视图控制器”,这可能是相关的。
非常感谢任何人都能提供的帮助。 d。
答案 0 :(得分:1)
听起来你有一个或两个segue直接连接到故事板中的按钮,即使你没有在代码中调用performSegueWithIdentifier(_:)
,它也会在按下按钮时自动触发segue。然后,您正在设置一个IBAction
方法,该方法在按下按钮时也会 ,然后您可以通过编程方式再次执行segue 。
您可以转到故事板并选择按钮来查看此内容。转到右侧的连接检查器,我希望您看到Triggered Segues
部分,其中“操作”会触发您的“show”segue。您可以通过单击连接旁边的十字来删除它。
对于应该以编程方式启动的segue,您应该通过从视图控制器对象(而不是从控件/可操作元素)拖动到下一个视图控制器来创建segue。这将创建一个只在代码中由performSegueWithIdentifier(_:)
触发的通用segue。
正如您所注意到的,由于您的segue是用于弹出式演示文稿,因此除非将其明确锚定到故事板中的特定视图,否则它将会抱怨。您仍然可以将segue从视图控制器对象拖动到弹出视图控制器,但您必须手动挂钩锚点:在故事板中选择segue,选择右侧的属性检查器,然后从“锚点”中的圆圈拖动“要锚定到的文本字段的字段。