【发布时间】:2017-11-29 05:42:19
【问题描述】:
我已正确设置委托,以便两个不同的视图控制器相互通信。传数据没有问题(我查过了,传数据成功)。我遇到的唯一问题是当我使用以下代码插入新行时:
let indexPath = IndexPath(row: paymentMethodArray.count - 1, section: 0)
tableView.insertRows(at: [indexPath], with: .automatic)
tableView.reloadData()
它不做任何事情(它不更新行但数据被传递并附加到数组中)。但是,当我从同一个视图控制器调用函数而不必从另一个视图控制器返回时,此代码有效(数据从 AddPaymentViewController 发送到此视图控制器,AddPaymentViewController 是当前 vc 之后的 vc)。我的猜测是我的目的地 segue 或视图控制器的代码是错误的。
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
let addPaymentViewController = segue.destination as! AddPaymentViewController
addPaymentViewController.delegate = self
}
如果您需要这方面的更多信息,我可以补充。请告诉我,谢谢。
【问题讨论】:
-
除了问题从不在
insertRows(... /deleteRows(...之后立即致电reloadData()。因为插入/删除会更新 UI。以及在哪里将对应的项添加到数据源数组中? -
我在“let indexPath...”之前将传递的数据添加到数组中,所以在这种情况下,我应该将 reloadData() 放在哪里?
-
删除该行,它是多余的,您将丢失动画。
-
@vadian true,除此之外你还看到我的代码的问题吗?似乎只是没有发生行插入。当我从同一个视图控制器调用该函数时,行插入工作。此外,数据也被正确传递是 100% 清楚的。
-
我猜这个问题与问题中的代码没有直接关系。
标签: ios swift uitableview segue