Zugriff auf die Eigenschaft aus einem anderen viewController Klasse in Swift?
Arbeitet mit einem split-view-controller...ich habe eine variable bekommt einen Wert in meinem settingsViewController Klasse, und jetzt in meiner main-view-controller habe ich Zugriff auf das wertvolle, die variable. Wie kann ich auf settingsViewController.selectedCounty?
class settingsViewController: UIViewController, UIPickerViewDataSource, UIPickerViewDelegate {
let titleData = TitleData()
var selectedCounty = String?("Allegany")
versuchen, greifen Sie diesen Wert auf Platz im:
class ViewController: UIViewController {
let settings = settingsViewController()
let selectedCounty = settings.selectedCounty
gibt "settingsViewController.type" nicht haben ein Mitglied namens selectedCounty?
- Denken Sie daran:
let settings = settingsViewController()
erstellt eine neue Instanz der settingsViewController Klasse, die ist völlig unabhängig von der vorhandenen settingsViewController Instanz. - Wie settingsViewController und main view-controller passen in das split-view-controller?
- MartinR, ich verstehe, was du sagst, und es schien seltsam für mich auch, aber warum ist das so, wenn ich eine neue Swift-Datei "MyNewClass" beinhaltet, dass die variable X, dann stellen Sie eine Instanz des MYNewClass über myNewClass = MyNewClass(), ich bin in der Lage zu nennen myNewClass.x? In anderen Worten, eine benutzerdefinierte Klasse, die ich anrufen kann, aber ich kann nicht rufen Sie mein settingsViewController Klasse, weil es inhereits aus ViewController?
- Ich habe einen screen shot
- Der screen-shot ist nicht besonders hilfreich, ich kann noch nicht wirklich sagen, was Sie tun. Es sieht aus wie der navigation-controller, der die Häuser ViewController ist eines der Kinder von der split-view-controller, aber welcher? Ist es das detail oder den master? Ich sehe nicht, eine andere Beziehung segue von der split-view-controller. Es sollte 2; eine auf master und eine auf das detail. Der Wechsel der Einstellungen von der split-Ansicht sieht aus wie eine "Show" segue. Warum ist das so? Und Sie haben auch eine andere "Show" aus ViewController für die Einstellungen, also das ist ein komisches setup, wenn ich lese es richtig.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Landete ich es herauszufinden, dass ich brauchte, um Anruf prepareForSegue auf settingsViewController in der Lage sein zu gehen, um meine anderen ViewController (beachten Sie, ich änderte es zu FirstViewController um Verwirrung zu vermeiden:
Swift anfänglichen Wert einer (gespeicherte)Objekt kann nicht davon abhängig sein, andere Eigenschaft(en).
Hier Ihre
ViewController
's-Eigenschaft(d.h.selectedCounty
) hängt vonsettingsViewController
's-Eigenschaft(d.h.selectedCounty
).Lösung:
Zuordnen können Sie es später in
init()
Die Linie
schafft eine Konstante der name
settings
TypsettingsViewController
. Dann in der Zeilediese Konstante wird nicht zugegriffen. Eher eine type-Eigenschaft
selectedCounty
von der ArtsettingsViewController
zugegriffen wird. Da gibt es keine solche Eigenschaft type, das ist ein Fehler.Zugriff auf die Eigenschaft wie folgt:
oder machen es zu einem type-Eigenschaft: