点击导航栏上的项目时更新tableview数据源

时间:2018-03-10 17:00:20

标签: ios swift tableview uinavigationbar

如果在第二个视图上点击后退按钮,如何更新tableview的数据源数组?

我没有看到如何在这种情况下使用seques / prepare / unwind。我也尝试了UINavigationControllerDelegate并没有成功。

方案:

第一个VC有一个包含发票信息的tableview。点击单元格时,它会显示第二个具有特定发票信息的VC。

第二个VC有付款的行动。当点击付款时,它显示第三个VC(模态)。

点击第三个VC付款后,它返回第二个VC(展开)。它有效。

当我回到第二个VC时,有一个后退按钮(< Invoices),我想回到第一个VC(发票)。回去工作。问题是我需要在回到导航栏时更新数据源。

保存按钮也可以。它更新数据源(segues / unwind)

Story Board

VC1成员:

var invoices = [Invoice]()
var client: Client?
var invoice: Invoice?
var filteredInvoices = [Invoice]()

VC2成员:

var invoice: Invoice?
var client: Client?
var invoiceItems : [InvoiceItem] = [InvoiceItem]()

VC3成员:

var amountPaid: Decimal = 0.00
var totalInvoice: Decimal = 0.00
var dateTransaction: String? = nil
var invoice: Invoice?

2 个答案:

答案 0 :(得分:0)

按下检测后退按钮:

class SomeViewController : UIViewController {

    override func didMove(toParentViewController parent: UIViewController?) {

        super.didMove(toParentViewController: parent)

        //Back button pressed
        if parent == nil {

            //Update your data source here
        }
    }
}

答案 1 :(得分:0)

我通过VC3(付款)向VC1(发票)展开解决了这个问题。

为什么?输入付款后返回发票清单而非发票明细更有意义。

我检查它是否从详细信息(VC2)或makepayment(VC3)返回并为每个方案进行适当的调用。