我有一个名为 Deck
的类,它有一个名为卡片的结构数组的属性。我有一个表格 View 设置为按名称显示每个牌组。我还有一个 View Controller 来输入用于添加新牌组或保存旧牌组的名称。添加新牌组时它工作正常,但是每当我更新旧牌组时,它不是简单地更新名称,而是创建一个精确的副本并将其添加到表格 View 中。
这是我从 DeckEditViewController
进行转场的准备:
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
super.prepare(for: segue, sender: sender)
//configure the destination view controller only when the save button is pressed.
guard let button = sender as? UIBarButtonItem, button == saveButton else {
print("The save button was not pressed, canceling")
return
}
let name = deckNameTextField.text ?? ""
let cards = deck?.cards
deck = Deck(name: name, cards: cards ?? [])
}
这是我在 TableView Controller 中的放松:
@IBAction func unwindToDeckList(sender: UIStoryboardSegue) {
if let sourceViewController = sender.source as? DeckEditViewController, let deck = sourceViewController.deck {
if let selectedIndexPath = tableView.indexPathForSelectedRow {
//Update existing deck
decks[selectedIndexPath.row] = deck
tableView.reloadRows(at: [selectedIndexPath], with: .none)
print("Updating existing deck")
}
else {
//add new deck
let newIndexPath = IndexPath(row: decks.count, section: 0)
decks.append(deck)
tableView.insertRows(at: [newIndexPath], with: .automatic)
print("Adding a new deck")
}
}
}
如果有人至少可以帮助我指出正确的方向,我就迷路了。提前致谢。
最佳答案
您可以根据您的要求使用自定义协议(protocol) - 委托(delegate),也可以使用通知中心传递数据。 如果您是新手,请查看这些网站以了解有关代表的更多信息。
您可以检查如何使用委托(delegate)传递数据 Youtube还。 我希望这对您有所帮助。
关于swift - 从第二个 View Controller 更新 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59187481/