2016-05-11 1 views
0

Ich importiere ein Bild von der Mail-App in meine eigene App, ich bekomme das Bild und versuche, es über AppDelegate an meinen Hauptansicht-Controller zu senden. Ich kann NSLog @ verwenden, um zu bestätigen, dass das Bild durchläuft, aber wenn ich versuche, es zu verwenden, wird es als Null angezeigt. Hier ist mein Code:Übergeben von Daten aus anderen Apps mit "Öffnen in", wenn die Hauptansicht über das Storyboard geladen wird?

In AppDelegate.m

- (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { 


    if (url !=nil && [url isFileURL]) { 
     MainViewController *view = [[MainViewController alloc] init]; 
     [view handleDocumentOpenURL:url]; 
     NSLog(@"Url 1: %@", url); // Url appears 
    } 

    return YES; 

} 

In meinem MainViewController.m

- (void)handleDocumentOpenURL:(NSURL *)url { 

    NSData *imageData = [NSData dataWithContentsOfURL:url]; 
    self.importedImage = [UIImage imageWithData:imageData]; 
    NSLog(@"Image %@", self.importedImage); // Shows the object exists 

} 

Das Problem ist, dass, wenn ich versuche, diese UIImage zuzugreifen (self.importedImage) von anderen Methoden es besagt, dass es null ist (es funktioniert innerhalb der oben genannten Methode).

Zusätzliche Informationen: Ich erkläre die importedImage als UIImage auf meiner MainViewController.h-Datei.

Ich nehme an, dass mein AppDelegate möglicherweise nicht auf den eigentlichen MainViewController, sondern eine Kopie davon zugreifen. Ich habe mich nach einer Antwort umgesehen und konnte nichts finden, jede Hilfe wird geschätzt.

Antwort

0

Bitte versuchen Sie es unter Code seine

geholfen werden kann

wenn importedImageUIView ist dann

[self.importedImage setBackgroundColor:[UIColor colorWithPatternImage:[UIImage imageWithData:imageData]]]; 

wenn importedImageist UIImageView dann

self.importedImage.image = [UIImage imageWithData:imageData]; 
+0

Danke für Ihre Antwort. Eigentlich importierteImage ist ein UIImage. Entschuldigung, dass ich dies auf dem Post nicht erwähnt habe. – AndreVitorio

+0

haben Sie versucht nach UIImage alloc und init. self.importedImage = [[UIImage alloc] init]; self.importedImage = [UIImage imageWithData: imageData]; –

+0

Ich habe das vorher versucht, aber es hat nicht funktioniert. Ich habe es geschafft, es richtig zu machen, Sie können die Antwort unten überprüfen. Danke für deine Hilfe @Tluck – AndreVitorio

0

Ich habe es! Mein Verdacht, dass AppDelegate nicht den richtigen ViewController gefunden hat, war richtig. Hier ist, was ich tat, in AppDelegate:

UINavigationController *navigationController = (UINavigationController *)self.window.rootViewController; 
MainViewController *result; 

//check to see if navbar "get" worked 
if (navigationController.viewControllers) 

    //look for the nav controller in tab bar views 
    for (UINavigationController *view in navigationController.viewControllers) { 

     //when found, do the same thing to find the MainController under the nav controller 
     if ([view isKindOfClass:[UINavigationController class]]) 
      for (UIViewController *view2 in view.viewControllers) 
       if ([view2 isKindOfClass:[MainViewController class]]) 
        result = (MainViewController *) view2; 
    } 


if (url !=nil && [url isFileURL]) { 
    [result handleDocumentOpenURL:url]; 
    NSLog(@"Url 1: %@", url); 
} 

ich die Antwort auf diesen Thread gefunden: https://stackoverflow.com/a/8791991/4187621

Das Problem war nicht das gleiche, aber die Lösung für mich gearbeitet. Ich hoffe, es hilft anderen.

Verwandte Themen