2016-04-22 112 views
0

我有覆盖整个视图的UIImage以及从其照片库设置图像的选项。如何让iOS应用程序记住用户从UIImagePickerController中选择的图像

我的问题是每当我完全关闭应用程序,UIImage恢复到默认图像。

这里是我的代码,如果你需要看它:

@IBAction func wallpaperMenuPressed(sender: AnyObject) { 

    if UIDevice.currentDevice().userInterfaceIdiom == .Pad { 
     self.imagePicker.delegate = self 
     self.imagePicker.sourceType = .PhotoLibrary; 
     self.imagePicker.allowsEditing = false 

     // The app is running on an iPad, so you have to wrap it in a UIPopOverController 
     self.imagePicker.modalPresentationStyle = .Popover 
     presentViewController(self.imagePicker, animated: true, completion: nil)//4 
     imagePicker.popoverPresentationController?.sourceView = wallpaperMenu 
     imagePicker.popoverPresentationController?.sourceRect = (sender as! UIButton).bounds 

    } else { 
     self.imagePicker.delegate = self 
     self.imagePicker.sourceType = .PhotoLibrary; 
     self.imagePicker.allowsEditing = false 


     presentViewController(imagePicker, animated: true, completion: nil) 
    } 
} 

回答

1

ViewController必须符合UIImagePickerControllerDelegateUINavigationControllerDelegate

您需要声明您的ViewController顶这个变量:

let userDefault = NSUserDefaults.standardUserDefaults() 

然后你就可以从PhotoLibrary获取图像:

func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage, editingInfo: [String : AnyObject]?) { 
    imageView.image = image 
    let imageData = UIImagePNGRepresentation(image) 
    userDefault.setObject(imageData, forKey: "khuong") 
} 

并在您的viewDidLoad()

override func viewDidLoad() { 
    super.viewDidLoad() 

    let imageData = userDefault.objectForKey("khuong") as? NSData 
    if let imageData = imageData { 
     let image = UIImage(data: imageData) 
     imageView.image = image 
    } 
} 
+0

我已经得到了那些已经在那里,我可以得到图像,但不记得它下一次 – Khoury

+0

太感谢你了,它完美 – Khoury

1

这就是你可能设计的方式。当你创建UIImageView时,你会在故事板或xib或代码中设置默认图像。

当您启动应用程序时,此屏幕从在xib/storyboard/code中创建的UI开始,以及在ViewDidLoad或ViewWillAppear中设置的任何默认图像。

无论图像您已经选择并保存,一旦你关闭该应用程序就会丢失,除非你改变默认的图像是从哪个NSUserDefaults的应用将坚持之间拍摄所选one.Make确保您的默认图像启动

1

使用NSUserDefaults存储您所选择的图像

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) 
    { 
    let myImage = info[UIImagePickerControllerOriginalImage] as! UIImage 

    NSUserDefaults.standardUserDefaults().setObject(myImage, forKey: "myPhoto") 
    self.dismissViewControllerAnimated(false, completion: nil) 
    } 
相关问题