Создайте экземпляр класса в одном ViewController и используйте его для отображения данных в другом - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь создать экземпляр «бюджетного» класса, когда нажимаю кнопку, которая на данный момент содержит только информацию о предполагаемом валовом доходе. Когда эта кнопка нажата, я хочу создать экземпляр этого бюджетного класса, а затем использовать этот экземпляр в новом контроллере представления, который отображается для отображения данных. Каков наилучший способ сделать это? Должен ли я делать это по-другому?

Сейчас у меня есть бюджетный класс, как показано ниже:

import Foundation

class Budget {
    private var _grossIncome: Int!

    var grossIncome: Int {
        return _grossIncome
    }

    init(grossIncome: Int) {
        self._grossIncome = grossIncome
    }
}

И контроллер вида с кнопкой, которую нужно нажать здесь:

import UIKit

class CreateNewBudgetVC: UIViewController {
    @IBOutlet weak var grossIncomeVal: UITextField!
    @IBOutlet weak var locationVal: UITextField!
    @IBOutlet weak var federalExptVal: UITextField!
    @IBOutlet weak var stateExptVal: UITextField!
    @IBOutlet weak var deductionsList: UITableView!

    @IBAction func cancelPressed(_ sender: Any) {
        performSegue(withIdentifier: "CancelSegue", sender: self)
    }

    @IBAction func generateBudgetPressed(_ sender: Any) {
        performSegue(withIdentifier: "GenerateSegue", sender: self)
        let budget = Budget(grossIncome: Int(grossIncomeVal.text!)!)
    }
}

Итак, как мне сделать так, чтобы при вызове метода «genereateBudgetPressed» по нажатию кнопки он создавал новый экземпляр класса бюджета с указанным валовым доходом, и я могу использовать эту информацию для отображения вещей на новом контроллере представления ? Есть ли лучший способ сделать весь этот процесс?

1 Ответ

0 голосов
/ 15 мая 2018

Один из способов сделать это - передать экземпляр бюджета в качестве отправителя на вызов performSegue.Таким образом, готовясь к segue, вы можете получить это значение и заполнить segue.destination viewcontroller.

@IBAction func generateBudgetPressed(_ sender: Any) {
    let budget = Budget(grossIncome: Int(grossIncomeVal.text!)!)
    performSegue(withIdentifier: "GenerateSegue", sender: budget)
}

override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
    if let budget = sender as? Budget, let destination = segue.destination as? YourDestinationViewController {
        destination.budget = budget
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...