我有一个UIViewController
的应用,用于将项目添加到UITableView
。用户填写几个字段,然后数据显示在单元格中。我正在进行展开并在调用视图上使用函数来检索数据。要创建展开,我单击从控制器拖动到Exit
,然后选择我的功能。
现在,我还想使用来自不同UIViewController
的相同UIViewController
来允许用户编辑已添加的数据。当我单击“接受”按钮时,它将展开到UITableViewController
,而不是从调用它进行编辑的视图展开。
接受按钮的代码是:
@IBAction func acceptButtonClick(sender: UIBarButtonItem) {
performSegueWithIdentifier("ReturnFromAddItem", sender: title)
}
我想做的是:
@IBAction func acceptButtonClick(sender: UIBarButtonItem) {
if !editingFields {
performSegueWithIdentifier("ReturnFromAddItem", sender: title)
}
else {
performSegueWithIdentifier("ReturnFromEditItem", sender: title)
}
}
虽然看起来我无法做到这一点。我的segue ID为ReturnFromAddItem
。我没有看到添加两个展开细分的方法。知道如何处理这个问题吗?我想要添加相同的功能。我想让它在调用者上解开一个函数。
我应该详细说明一下。我能够通过控制点击拖动将第二次展开添加到“退出”,但是当我在performSegueWithIdentifier
中调用它时,它什么也没做。没有错误,但它不会离开视图控制器并返回调用者。
编辑以进一步阐述。
基本控制器称为BaseViewController。这是UITableView
。在导航栏中是" +"调用名为AddViewController的UIViewController
的按钮。单击" +按钮时,会出现一个将用户带到AddViewController的segue。用户填写几个字段并单击“接受”按钮。上面列出了“接受”按钮的代码。它调用unwind segue,然后返回BaseViewController。当用户点击BaseViewController中的项目时,它会将用户带到名为InformationController的UIViewController
。从那里,我想通过单击InformationController导航栏上的“设置”按钮为用户提供编辑数据的机会。这将转到AddViewController UIViewController
,但它会用它来编辑现有字段。我想放松并在从InformationController调用AddViewController时返回到InformationController,并在从BaseViewController调用AddViewController时返回到BaseViewController。我遇到的问题是,即使我为AddConController添加了一个展开的segue到InformationController,当我点击Accept按钮时也没有任何反应。
最终编辑: 我想我已经弄清楚了。在InformationController中,我使用viewWillDisappear将unwind segue调用回BaseController。当我单击设置从InformationController调用AddViewController时,viewWillDisappear正在触发,我正在向BaseViewController展开。所以我需要弄清楚的是我是否应该继续使用viewWillDisappear并找到一种方法来告诉它它并没有消失,因为我已经完成了它,或者我是否应该从其他地方执行unwind。 / p>