2016-08-01 15 views
-2

Ich habe einen ImagePickerController in meinem Hauptansicht-Controller, mit dem der Benutzer ein Bild auswählen kann. Mit diesem Image werden einige Ergebnisse in einer Tabellenansicht im selben View-Controller geladen.Wie übergebe ich ein Bild, das später in einem anderen View-Controller gespeichert werden soll?

Wenn eine Zeile in der Tabellenansicht ausgewählt wird, wird ein weiterer Tabellenansicht-Controller mit einer Menge Strings geöffnet. Wenn eine Zeile aus dieser Tabelle VC ausgewählt wird, wird ein anderer Tabellenansicht-Controller mit einer Liste von Filmen aus TMDB api geladen, und dann wischt der Benutzer, um einen Film zu speichern.

In meiner App haben die Kerndaten die Beziehung eines einzelnen Bilds in Bezug auf einige Filme.

Also ich würde gerne wissen, was ist der beste Weg, um das Bild ausgewählt verfolgen. Ich weiß, dass NSUserDefaults nicht der beste Ansatz ist.

+0

würde wahrscheinlich mehr für den Menschen helfen, Antworten zu geben, entweder Objective-C oder swift zu holen. –

+0

Bitte ändern Sie das Tag nicht von Objective-C in Swift, nachdem Sie die Antwort für Objective-C erhalten haben. –

Antwort

2

Sie können die Variable in der Headerdatei des Ziel-VC deklarieren. Sowie;

@property UIImage* sourceImage; 

Vor dem Öffnen Ziel VC, gesteckte Ziel VC Bild:

targetViewController.sourceImage = [UIImage ....] 

Dann innen Ziel VC verwenden mit:

if (_sourceImage != nil){ 
    _sourceImage // Your passed image 
} 

2. Way

Unter Berücksichtigung Singleton verwenden .

Erstellen Sie einen neuen NSObject und nennen Sie es zu Singleton

Fügen init in der .m Datei

+ (id)sharedManager { 
    static Singleton *sharedMyManager = nil; 
    static dispatch_once_t onceToken; 
    dispatch_once(&onceToken, ^{ 
     sharedMyManager = [[self alloc] init]; 
    }); 

    return sharedMyManager; 
} 

- (id)init { 
    if (self = [super init]) { 

    } 
    return self; 
} 

In der .h Datei definieren

+ (id)sharedManager; 
@property UIImage* mainImage; 

Im View-Controller, #import "Singleton.h" dann initialisieren Singleton und dein Bild zuweisen.

Am 3. VC, #import "Singleton.h" wieder

Und jetzt können Sie erreichen

Singleton* si = [Singleton sharedManager]; 
si.mainImage = // Your image. Check if it's nil or not before use. 
+0

Wenn ich die Variable UIImage nicht im Controller der zweiten Ansicht verwende, wäre das nicht überflüssig? – thegrandhi

+0

@thegranghi Also bitte sag mir, was benutzt du? Dann kann ich meine Antwort aktualisieren. –

+0

Ich habe 3 View-Controller. Bild ist in der ersten ausgewählt. Dann wird ein Film im letzten View-Controller gespeichert. – thegrandhi