【发布时间】:2016-05-12 03:04:59
【问题描述】:
目前我正在我的应用程序中处理两个不同的 ViewController,我们可以将它们称为 VC1 和 VC2。 VC1 显示一个注册表单,在 UITableView 的每一行中都有一个问题,并有一个编辑按钮。编辑按钮是从 VC1 和 VC2 开始的。 VC2 显示一个允许用户编辑问题的界面。我想编写应用程序,以便您无法从 VC1 切换到 VC2,除非您选择了要编辑的问题(行)。现在我已经设置了一些,但有可能我把它倒过来了。
在 VC1 中:
// this method isn't called until VC2 segues back to VC1... so I don't know how
// to make sure that a selection has been made before pressing the button
@IBAction func editQuestion(segue:UIStoryboardSegue) {
if let editQuestion = segue.sourceViewController as? VC2 {
}
}
在 VC2 中:
override func shouldPerformSegueWithIdentifier(identifier: String, sender: AnyObject!) -> Bool {
// check to make sure that user has completed all fields of question
// if they haven't completed all fields, return false (do not segue)
// else segue to VC1
}
【问题讨论】:
-
在调用 performSegueWithIdentifier() 之前,应该在 VC1 中执行 segue 之前的检查
-
是的,我明白这一点。不过,我不确定该怎么做。你有什么想法吗?我现在的结构不适合这样做。
-
你如何调用 VC2 的 segue?它连接在故事板中吗?
-
是的。两者都连接到故事板。我在 VC1 到 VC2 中按住 ctrl 单击编辑按钮,然后在 VC2 中按住保存按钮到 VC2 的出口,然后将其发送到 VC1 中的 editQuestion 函数。一切都已连接并正确连接,我只是不知道如何在按下编辑之前检查是否选择了问题。
-
问题。假设我在 VC2 的 ViewDidAppear 方法中检查了一个问题的选定索引的值。如果索引为 -1,我知道没有选择任何内容。有没有办法通过 ViewDidAppear 将其发送回 VC1?