Hallo zusammen,
ich habe ein Verständnisproblem zu folgendem Code:
Es bestehen 2 ViewController, "ViewController" und "DetailViewController", beide per segue namens "nextView" verbunden. Dem DetailViewController soll bei Ausführen des Segues ein Name per "detailItem" übergeben werden, der diesen dann anzeigt. Wenn ich es richtig verstehe, werden der Funktion "prepareForSegue" beim Aufruf zwei Objekte übergeben, "segue" und "sender".
Das Objekt "segue" beinhaltet u.a. lt. API Reference die properties "identifier" vom Typ String und "destinationViewController" vom Typ UIViewController. Mir ist nicht ganz klar, was jetzt die property "destinationViewController" genau enthält und warum sie erst in den Typ DetailViewController umgewandelt werden muß, um Zugriff auf "detailItem" zu erhalten. Ist es so, daß zwar ein Objekt von "DetailViewController" enthalten ist, ich aber keinen Zugriff auf "detailItem" habe, weil diese property in der Superklasse UIViewController nicht enthalten ist? Diese wird also sozusagen erst nach Typumwandlung "freigeschaltet"?
Dann verstehe ich nicht, wieso folgendes nicht funktioniert:
Das enthaltene Objekt wurde doch in den Typ DetailViewController umgewandelt, wieso kann ich ihn nun nicht über die Punktnotation ansprechen? Oder ist in segue.destinationViewController gar kein Objekt sondern etwas ganz anderes enthalten?
Ich stehe leider grad völlig auf dem Schlauch, für alle Hinweise dankbar!
ich habe ein Verständnisproblem zu folgendem Code:
Code:
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
if segue.identifier == "nextView" {
(segue.destinationViewController as! DetailViewController).detailItem = "Name"
}
Es bestehen 2 ViewController, "ViewController" und "DetailViewController", beide per segue namens "nextView" verbunden. Dem DetailViewController soll bei Ausführen des Segues ein Name per "detailItem" übergeben werden, der diesen dann anzeigt. Wenn ich es richtig verstehe, werden der Funktion "prepareForSegue" beim Aufruf zwei Objekte übergeben, "segue" und "sender".
Das Objekt "segue" beinhaltet u.a. lt. API Reference die properties "identifier" vom Typ String und "destinationViewController" vom Typ UIViewController. Mir ist nicht ganz klar, was jetzt die property "destinationViewController" genau enthält und warum sie erst in den Typ DetailViewController umgewandelt werden muß, um Zugriff auf "detailItem" zu erhalten. Ist es so, daß zwar ein Objekt von "DetailViewController" enthalten ist, ich aber keinen Zugriff auf "detailItem" habe, weil diese property in der Superklasse UIViewController nicht enthalten ist? Diese wird also sozusagen erst nach Typumwandlung "freigeschaltet"?
Dann verstehe ich nicht, wieso folgendes nicht funktioniert:
Code:
segue.destinationViewController as! DetailViewController
segue.destinationViewController.detailItem = "Name"
Das enthaltene Objekt wurde doch in den Typ DetailViewController umgewandelt, wieso kann ich ihn nun nicht über die Punktnotation ansprechen? Oder ist in segue.destinationViewController gar kein Objekt sondern etwas ganz anderes enthalten?
Ich stehe leider grad völlig auf dem Schlauch, für alle Hinweise dankbar!