2016-10-25 9 views
0

私はスウィフト3を使用していますし、20種類のUIViewcontrollerUIImageをView Controllerに保存して呼び出すにはどうすればよいですか?

に20種類のUIImageのビューを作成しているhttps://developer.apple.com/library/content/referencelibrary/GettingStarted/DevelopiOSAppsSwift/Lesson4.htmlりんご彼らはなどphotoImageView1photoImageView2は現在、あなたがそれぞれ一般的な画像と入力自分でクリックすることができますと呼ばれているが、次のされています画像。

私は、ユーザーが自分の画像を入力することができるようにしたいと思いますが、それを保存することもできます。また、同じ画像を再度開くときに入力した画像があります。viewcontroller

私は多くの異なる方法を見てきましたが、私はこの質問Save images in NSUserDefaults?に続いて試みたが失敗してしまい、もう一度うまくいかなかった。どんな助けでも大歓迎です、ありがとう。

+1

あなたは "入力プログラム" あなたは画像を所有している、あなたはUIImagePickerControllerを使用している必要があります。したがって、あなたが選択したこれらのイメージをDocumentDirectory(一意に名前を付けること)で保存し、そこにARRAY/.PLIST/MODELのパスを保存します。 – Wolverine

答えて

1

私はこの方法を使用してしまいましたが、それは最高ではないかもしれませんが、それは簡単です。

import UIKit 


class timetable: UIViewController, UINavigationControllerDelegate, UIImagePickerControllerDelegate { 

@IBOutlet var imageviewtimetable: UIImageView! 

@IBAction func saveMyImage(_ sender: UIBarButtonItem) { 

    let myTimeTableImage = imageviewtimetable.image 
    let theImageData:NSData = UIImagePNGRepresentation(myTimeTableImage!)! as NSData 

    UserDefaults.standard.set(theImageData, forKey: "mySavedImage") 

    let data = UserDefaults.standard.object(forKey: "mySavedImage") 
    imageviewtimetable.image = UIImage(data: data as! Data) 



} 




    override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view. 



    let data = UserDefaults.standard.object(forKey: "mySavedImage") 
    imageviewtimetable.image = UIImage(data: data as! Data) 

}

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
    // Dispose of any resources that can be recreated. 
} 

@IBAction func selectImageFromPhotoLibrary(_ sender: Any) { 

    let imagePickerController = UIImagePickerController() 
    imagePickerController.sourceType = .photoLibrary 
    imagePickerController.delegate = self 
    present(imagePickerController, animated: true, completion: nil) 


} 



func imagePickerControllerDidCancel(_ picker: UIImagePickerController){ 
    dismiss(animated: true, completion:nil) 
} 


func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

    let selectedImage = info[UIImagePickerControllerOriginalImage] as! UIImage 
    imageviewtimetable.image = selectedImage 

    dismiss(animated: true,completion:nil) 
} 



/* 
// MARK: - Navigation 

// In a storyboard-based application, you will often want to do a little preparation before navigation 
override func prepare(for segue: UIStoryboardSegue, sender: Any?) { 
    // Get the new view controller using segue.destinationViewController. 
    // Pass the selected object to the new view controller. 
} 
*/ 

}

0

イメージ名をデータベース、iCloud、plist、またはUserdefaultsに保存することができます。ディスクに画像を保存ではなく、写真のライブラリは、使用するには:

import PlaygroundSupport 
    import UIKit 

    func save(image: UIImage, name: String) -> Bool { 
     guard var path = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first, 
      let imageData = UIImagePNGRepresentation(image) else { 
       return false 
     } 
     path = path.appendingPathComponent(name) 
     do { 
      try imageData.write(to: path) 
     } catch { 
      return false 
     } 
     return true 
    } 

    func loadImage(name: String) -> UIImage? { 
     guard var path = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask).first else { 
      return nil 
     } 
     path = path.appendingPathComponent(name) 
     return UIImage(contentsOfFile: path.relativePath) 
    } 

    let image = UIImage(named: "test.png")! 
    save(image: image, name: "test2.png") 
    let loadedImage = loadImage(name: "test2.png") 
    PlaygroundPage.current.liveView = UIImageView(image: loadedImage) 

EDITを:あなたはコピーして遊び場に貼り付けて、それを実行することができますので、私は完全な遊び場にソースコードを変更しました。あなたがする必要があるのは、test.pngという名前のファイルをResourcesフォルダにドラッグすることだけです。

+0

私は(イメージデータ= UIImagePNGRepresentation(イメージ)else {)イメージ部分を変更するつもりですか?もしそうなら、何に?関数を使用するときにエラーが発生していないパラメータが表示され、UIImage型のUIImageViewの型を使用できないエラーが発生すると思います。 – Yellow

+0

私は名前の下でそれを落とす必要があると思いますか?その名前をそこに置く。ここで画像は....です。次に名前の下に(名前)を入れてファイルディレクトリに保存します – Yellow

+0

名前はファイル名です。ドキュメントディレクトリに保存されます。ドキュメントディレクトリの下に独自のディレクトリを作成することもできますが、この例ではt hatはありません。コードはそのまま動作します。私は遊び場でそれをテストしました。 UIImagePNGRepresentationをUIImageJPGRepresentationに変更することができます。 –

関連する問題