swift - 从第二个 View Controller 更新 TableView

标签 swift tableview

我有一个名为 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),也可以使用通知中心传递数据。 如果您是新手,请查看这些网站以了解有关代表的更多信息。

  1. Delegation-Pattern
  2. Understanding Delegates and Delegation
  3. Implementing delegates

您可以检查如何使用委托(delegate)传递数据 Youtube还。 我希望这对您有所帮助。

关于swift - 从第二个 View Controller 更新 TableView ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59187481/

相关文章:

ios - 使 uitableview 的行高适合他的内容

ios - 如果我在运行应用程序时使用 IBDesignable 文件,为什么自动布局不会更新?

ios - 如何在 tableview 中保持图像大小?

ios - 返回后重新加载 UITableview

ios - 将 UIPickerView 行标题链接到新的 View Controller

ios - UIPageControl 显示当前页面

java - 选择 TableView 行时启用禁用按钮

ios - 如何使用表格 View 外部的按钮将表格 View 移动到新的表格 View

ios - 快速谷歌登录

ios - Swift 删除选项和不必要的字符 iOS