2016-11-04 35 views
0

Ich möchte ein Bild speichern und abrufen, das aus meiner avcapturesession stammt. Ich konnte dies mit einem Knopfdruck machen, aber ich möchte, dass das Bild automatisch erscheint, nachdem es aufgenommen wurde. Es funktioniert gut mit einer IBAction-Presse. Hier ist, was ich getan habe. Ich speicherte das Bild mit diesem CodeAngezeigtes Bild von avcapture anzeigen

UIImage *Capture = [UIImage imageWithData:self.jpegPhotoData]; 
capturetest = Capture; 
NSData *imageData; 
imageData = [NSKeyedArchiver archivedDataWithRootObject:Capture]; 
[[NSUserDefaults standardUserDefaults] setObject:imageData forKey:@"image"]; 

Dann rief ich die NSUserDefaults mit einem Tastendruck mit diesem Code.

-(IBAction)test:(id)sender 
{ 
    NSLog(@"WAS IT PRESSED"); 
    NSData *imageData1; 
    imageData1 = [[NSUserDefaults standardUserDefaults] objectForKey:@"image"]; 
    capturetest = [NSKeyedUnarchiver unarchiveObjectWithData: imageData1]; 
    self.imgView.image = capture test; 
} 

Dies funktionierte perfekt. Als ich den Knopf drückte, zeigte er das Bild, das ich gerade aufgenommen habe, aber wie bekomme ich das Bild automatisch? Ich habe versucht, den Knopf-Code in eine void-Anweisung wie -(void)test dann nach der Aufnahme des Fotos habe ich [self test] genannt. Das hat nicht funktioniert. Ich habe sogar versucht, den Knopf automatisch so zu drücken, aber kein Glück.

[self performSelector: @selector(test:) withObject:self afterDelay: 0.0]; 
+0

Um welche Art von Objekt ist self.imgView? Wie ist imgView mit NSUserDefaults verbunden? Haben Sie versucht, im Debugger durch '-test: 'zu gehen, wenn es funktioniert und wo es nicht funktioniert und verglichen, was anders ist? Welchen Wert hat self.imgView zu diesen Zeiten? Von wo rufst du '-test:' wenn du es nicht von einer Taste aus anrufst? – uliwitness

Antwort

0
UIImage *Capture = [UIImage imageWithData:self.jpegPhotoData]; 
globalObject = Capture; 

Sie eine Sache tun könnte, die ein temporäres globales UIImage Objekt nehmen und wenn Sie Bild aufgenommen, dann können Sie Bild auf das Objekt speichern und verwenden, wann immer Sie wollen.

0

einen Delegaten schreiben, die das Bild auf die gewünschte Steuerung zurückzukehren, wie

YourImageController.h

@protocol ImageSendingDelegate <NSObject> 

-(void)ServiceResponse :(UIImage *)currentImage; 
@end 

@interface YourImageController : ....... 

@property(strong,nonatomic)id <ImageSendingDelegate>IDelegate; 

YourImageController.m Wo Sie Bilddaten

UIimage *image = [UIImage imageWithData:self.photoData]; 

[_IDelegate ServiceResponse:image]; 

Import erhalten YourImageController.h in DesireController.h

@interface DesireController : UIViewController<ImageSendingDelegate> 

@property (strong,nonatomic)YourImageController *delegateObject; 

DesireCOntroller.m

if(_delegateObject==nil) 
{ 
_delegateObject=[[YourImageController alloc]init]; 

    _delegateObject.IDelegate=self 

} 

-(void)ServiceResponse:(UIImage *)currentImage 
{ 

UIimage *IamgeRecived=currentImage; 

NSLog(@"\n\n\n\n geting image"); 

}