2016-11-11 3 views
0

Das mag trivial sein, aber ich bin neu bei Swift und würde mich über jede Hilfe freuen.Übergeben Sie ein Bild zwischen zwei bereits geladenen View-Controllern

App wurde entwickelt, um Bilder zu ändern.

Ich habe 3 Viewcontrollers:

  • UIScrollView Enthält
    • Aktion - Alle Maßnahmen, um Bilder gemacht (innerhalb UIScrollView enthalten)
    • Preview - Bildvorschau (enthalten in UIScrollView)

Ich möchte eine UII verschieben Magier von Aktion zu Vorschau.

Alle View-Controller sind bereits geöffnet. Aktion und Vorschau sind nebeneinander untergeordnete Elemente des UIScrollView. Ich möchte sie nicht wieder öffnen oder automatisch zu ihnen wechseln. Ich möchte nur das Bild in der Vorschau aktualisieren, nachdem die Änderungen in Action abgeschlossen wurden.

Ich verwende Swift 3.0 und Xcode 8.

Interface Builder Layout Image

+0

Korrigieren Sie mich, wenn ich Ihre Frage falsch verstanden habe, Aktion und Vorschau sind zwei View-Controller, Sie zeigen eine Vorschau Ihres Bildes im Vorschau-Controller und nach der Vorschau möchten Sie das Bild auf Action-View-Controller verschieben. Ist es das was du willst? – Janmenjaya

+0

Ein Bild Ihres aktuellen IB-Designs könnte Ihnen helfen zu verstehen, was Sie brauchen. – Michael

+0

2 Möglichkeiten gibt es können Sie verwenden, bereiten Sie für den Übergang, um Bild an den Viewcontroller übergeben. Oder Sie können eine Singleton-Klasse verwenden, um ein Bild zu halten. – Vinodh

Antwort

0

Normalerweise gibt es nur einen Viewcontroller zu einem Zeitpunkt sichtbar, so unter der Annahme, dies der Fall ist, ist die typische Art und Weise zwischen ihnen zu kommunizieren, ist ein Eigenschaft auf dem Ziel, und oft wird dies durch ein separates Protokoll getan. Zum Beispiel

protocol CanDisplayImage { 
    var imageToDisplay: UIImage? { get; set; } 
} 

Dann wird Ihr Ziel Viewcontroller würde dieses Protokoll implementieren:

class MyPreviewController: UIViewController, CanDisplayImage { 
    var imageToDisplay: UIImage? 
    func viewDidLoad() { 
     theImageView.image = imageToDisplay 
    } 
} 

Und dann Ihre Quelle Viewcontroller ein segue zum Ziel führt, und legt diese Eigenschaft in seinem

override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    if let dest = segue.destination as? CanDisplayImage { 
     dest.imageToDisplay = theImageToPreview 
    } 
} 

Wie Sie den Übergang festlegen, kann in verschiedenen Fällen erfolgen. Am gebräuchlichsten ist es, mit der Strg-Taste von einer Schaltfläche oder einem anderen Element innerhalb der Quelle viewController zu einer beliebigen Stelle innerhalb des Ziel-ViewControllers zu ziehen.

Beachten Sie, dass ich den obigen Code nicht überprüft habe, kompiliert, so dass ich einige Tippfehler haben könnte.

Verwandte Themen