Ich versuche, die Let-Namen-Anweisung in struct Person von TwoVIEWCONTROLLER cal. Ich dachte, ich kann nur eine Struktur Einträge von einem anderen View-Controller aufrufen, aber ich bin mir nicht sicher. Das Hauptproblem, das ich habe, ist, dass die Struktur nur einen Eintrag nehmen kann. DER CODE KANN JETZT DEN STRUKTURKAUF ÜBERTRAGEN, NUR EINEN EINTRAG WIRD GESPEICHERT. WIE KANN ICH DIE STRUKTUR ERHALTEN, UM MEHRERE EINTRÄGE ZU SPEICHERN?Aufruf der Struktur aus verschiedenen Sicht-Controller, der mehrere Einträge (swift4) enthält
Viewcontroller
import UIKit
class ViewController: UIViewController {
@IBOutlet var a: UITextField!
@IBOutlet var label: UILabel!
var contacts = [Person]()
@IBAction func save(_ sender: Any) {
let newPerson = Person(name: a.text!)
contacts.append(newPerson)
contacts.sort { $0.name < $1.name }
self.selectedPerson = newPerson
}
var selectedPerson:Person?
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if let vc = segue.destination as? twoViewController {
if self.selectedPerson != nil {
vc.person = selectedPerson
}}}
}
struct Person: CustomStringConvertible {
let name: String
var description: String {
return name
}}
twoVIEWCONTROLLER
import UIKit
class twoViewController: UIViewController {
@IBOutlet var l: UILabel!
var person:Person?
override func viewDidLoad() {
super.viewDidLoad()
if let p = self.person {
l.text = p.name
}}}
Sie benötigen Zugriff auf eine Instanz von Person, die 'name' Eigenschaft dieser Instanz zuzugreifen. – dasdom
Sie haben nicht gesagt, ob 'ViewController'' twoViewController' präsentiert oder beide völlig unabhängig sind ... – Ladislav
@Ladislav Ich versuche das mit beiden Viewcontrollern zu machen, die unabhängig voneinander arbeiten. –