Swift: 将popUp中的数据添加到struct并显示在tableview中

Swift: add data from popUp to struct and show in tableview

我正在构建一个应用程序来跟踪分数我有一个结构

   */
var teamA_name: String!
var teamB_name: String!
var teamA_points: [Int] = []
var teamB_points: [Int] = []


/*
    - Add points to the teams
 */

mutating func addPoints(teamA: Int, teamB: Int){
    self.teamA_points.append(teamA)
    self.teamB_points.append(teamB)

}

如您所见,我有两个用于保存用户点数的整数数组。我有一个带有两个表视图的控制器来显示用户添加的点数组,我将跳过一些代码,因为我知道我的问题不需要这些代码,这是我的 Main ViewController 表格将显示分数

class GameScoreViewController: UIViewController {


/*
     - Properties
 */

var gameScore = GameScore()

override func viewDidLoad() {
    super.viewDidLoad()

    //- Setup delegates & datasources

    teamA_tableview.delegate = self
    teamA_tableview.dataSource = self

    teamB_tableview.delegate = self
    teamB_tableview.dataSource = self

    // - Button configuration

    addPointsButton.layer.cornerRadius = 5


}


override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if segue.identifier == "toPopUp"{
        let popUpView = segue.destination as! PopUpViewController

            // this is where i call my popup view
        }
    }
}

}

现在我的问题出现了,当我转到我的弹出窗口并且用户输入所需的分数并点击完成时,数据不会附加到数组并且我的 tableview 不会重新加载,我'我尝试了很多不同的方法,使用回调、委托,我尝试了 userdefaults 因为它不是非常重要的数据,但似乎没有任何效果,我被卡住了,这是我应该发生的弹出视图控制器按钮操作,我离开了 textfield.text中的参数供参考

@IBAction func addBtnPressed(_ sender: Any) {

    // this is the func to append data to the array
    gameScore.addPoints(teamA: Int(pointsTextField.text!)!, teamB: 0)



    self.dismiss(animated: true, completion: nil)

   //after dismissed it should reload table view or insert row with the user entered score 
}

任何帮助将不胜感激,谢谢。

您似乎在弹出窗口中声明了一个单独的实例

 gameScore.addPoints(teamA: Int(pointsTextField.text!)!, teamB: 0)

您需要在 segue 中为真实对象设置委托

let popUpView = segue.destination as! PopUpViewController
popUpView.delegate = self

并在弹出窗口中声明它,如

var delegate:GameScoreViewController?

那就用吧

delegate?.addPoints(teamA: Int(pointsTextField.text!)!, teamB: 0)