放松Segue到两个不同的UIViewControllers

时间:2015-07-10 03:54:35

标签: ios swift unwind-segue

我有一个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>

0 个答案:

没有答案