Swift: Delegates und Optionals...

L

leggeug

Neues Mitglied
Thread Starter
Dabei seit
07.11.2006
Beiträge
18
Reaktionspunkte
1
Hallo liebes Forum
als ziemlicher Anfänger kämpfe ich mit Optionals in Swift. Ich versuche, ein Foto aus einem ViewController (PhotoViewController) zum andern (MyViewController) zu schicken. Das funktioniert alles wunderbar, in meiner delegate-Methode ist imageToShow korrekt. Wieso ist imageToShow in der viewDidLoad-Funktion immer nil? Vielen Dank für Eure Unterstützung!
hier mein Code:

class MyViewController: UIViewController, PhotoViewControllerDelegate {
var imageToShow: UIImage?
override func viewDidLoad() {
// . . . code . . .
myVC.delegate = self
if imageToShow != nil{ // <————— nil
print( „works!“ )
}
}


// delegate method

func imageData( bild: UIImage ) {
imageToShow = bild
print( imageToShow ) // <—————
Optional(<UIImage: 0x80881550> size {3000, 2002} orientation 0 scale 1.000000)
}



 
Aus dem Quelltext kann ich das jetzt nicht direkt erkennen, aber ich vermute, dass Deine delegate-Methode erst nach dem Laden der View ausgeführt wird.
 
Das ist mir eben nicht klar: wann und von welchem ViewController wird meine delegate-Methode ausgeführt?
Wenn ich nach myVC.delegate = self meine Variable ausgebe print( imageToShow ), dann ist mein Output:
Optional(<UIImage: 0x7e776a20> size {3000, 2002} orientation 0 scale 1.000000)
nil

also: erst ist imageToShow gesetzt, dann plötzlich wieder nicht mehr...
 
ok, ich kann das Problem eingrenzen: meine delegate-Methode wird von einer MyViewController-Instanz aufgerufen. Wenn ich von meinem PhotoViewController zurückkomme, wird aber ja eine neue MyViewController-Instanz erzeugt. Das heißt, mein imageToShow ist wieder neu erzeugt und nil... Oder liege ich komplett falsch? Wenn nein, wie behalte ich mein imageToShow??

Bitte entschuldigt meine Ahnungslosigkeit - versuche zu lernen :)
 
Zurück
Oben Unten