2
votes

Le membre d'instance ne peut pas être utilisé sur le type lors du transfert de UIViewController

Je configure des ViewControllers par programmation (pas de storyboard).

Je souhaite transmettre des données au prochain VC, et bien que je sache comment le faire avec une suite et un storyboard, je ne sais pas comment faites-le purement par programmation.

J'obtiens l'erreur "Le membre d'instance ne peut pas être utilisé sur le type ..."

// Create Next View Controller Variable

let nextViewController = CarbonCalculatorResultsViewController()

// Pass data to next view controller.  There is already a variable in that file: var userInformation: UserInformation?

CarbonCalculatorResultsViewController.userInformation = userInformation

// Push next View Controller
self.navigationController?.pushViewController(nextViewController, animated: true)

Dois-je instancier le suivant VC avant que je puisse transmettre des données? C'est ce dont cette réponse semble parler et pourtant je n'ai pas de storyboard. Merci!


0 commentaires

3 Réponses :


1
votes

Vous devez passer la variable sur l ' Object , pas sur la Class

Remplacez: CarbonCalculatorResultsViewController.userInformation = userInformation

Avec: nextViewController.userInformation = userInformation

Remarque:

CarbonCalculatorResultsViewController est la Classe < /code>.

nextViewController est l 'Object.

Votre code complet devrait ressembler à ceci:

< pré> XXX


0 commentaires

1
votes

L'exemple de code actuel (ci-dessus) définit une valeur sur une variable statique (appartenant à CarbonCalculatorResultsViewController.Type .

Ce que je pense que vous voulez implémenter est le suivant à la place: p>

// Create Next View Controller Variable

let nextViewController = CarbonCalculatorResultsViewController()

// Pass data to next view controller.  There is already a variable in that file: var userInformation: UserInformation?

nextViewController.userInformation = userInformation

// Push next View Controller
self.navigationController?.pushViewController(nextViewController, animated: true)

Cet exemple de code définit une valeur pour la variable d'instance userInformation sur le type nextViewController .

p>


0 commentaires

1
votes

Étape 1: Configurez votre classe de destination

Dans la classe CarbonCalculatorResultsViewController , déclarez une var pour recevoir des données comme ceci: p >

let nextViewController = CarbonCalculatorResultsViewController()
// You have access of the variable in CarbonCalculatorResultsViewController
nextViewController.foo = <data_you_want_to_pass>

// Push next View Controller
self.navigationController?.pushViewController(nextViewController, animated: true)

Étape 2: Préparez les données dans votre classe source

class CarbonCalculatorResultsViewController: UIViewController {
    var foo: String? {
        didSet {
            // What you'd like to do with the data received
            print(foo ?? "")
        }
    }

    ovevride func viewDidLoad() {
       //
    }
}

Ensuite, chaque fois que le CarbonCalculatorResultsViewController prend vie, le didSet {} de foo serait appelé.


0 commentaires