iPhone UIImagePickerController didFinishPickingImage: UIImage-transfer zwischen den view-Controllern?
In meine app, ich habe einen UIImagePickerController. Wenn ein Bild ausgewählt ist, meine view-controller braucht, um das Bild und geben Sie Sie an einen anderen view-controller, die gedrückt wird, auf sich selbst.navigationController. Aber ich bin immer SEGFAULTS oder null Argumente, und Dinge wie, dass. Ich würde es schätzen, wenn Sie mir sagen könnten was falsch ist mit diesem code:
FirstViewController.m:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingImage:(UIImage *)img editingInfo:(NSDictionary *)editInfo {
self.currentpicture = [img copy];
[self dismissModalViewControllerAnimated:YES];
[self goNext];
}
-(void)goNext{
SecondViewController *vc = [[SecondViewController alloc] initWithNibName:@"Second" bundle:nil];
[vc giveMePicture:currentpicture];
[self.navigationController pushViewController:vc animated:YES];
}
SecondViewController.m:
-(void)giveMePicture:(UIImage *)data {
self.currentpicture=[data copy];
}
Beide haben currentpicture definiert als ein UIImage *currentpicture;
Ich habe jetzt sollte haben currentpicture, da einige Daten, aber es stürzt jedes mal! Ich habe versucht, viele verschiedene Dinge, und ich kann nicht dieses heraus.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Mich korrigieren, wenn ich falsch Liege, aber UIImage nicht entsprechen, NSCopying, daher können Sie nicht erfolgreich kopieren.
Was Sie wahrscheinlich wollen, zu tun ist, behalten Sie das Bild. Wenn sich selbst.currentpicture ist ein 'behalten' - Eigenschaft ist, wird es automatisch mit der Veröffentlichung des vorherigen Objekts und behalten die neue, so nur dies:
Ansonsten do it yourself:
In beiden Fällen haben Sie immer noch anrufen [self.currentpicture release] wenn Sie nicht länger benötigt das Bild. In der Regel würden Sie tun, dass in der 'selbst' - Objekt dealloc-Methode hinzu.
Möglichkeiten für das teilen von Daten zwischen verschiedenen view-controller-Klassen, die über die app delegieren.
Zum Beispiel könnten Sie haben
UIImage *currentPicture
definiert Sie app zu delegieren und dann den Zugriff in beide view-controller-Klasse wie folgt: