2016-04-13 8 views
0

新UIimagesにコーディングに画像を設定する方法、私は、ユーザーが次のコードUIImagePickerControllerから複数のビューコントローラ

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

    if let pickedImage = info[UIImagePickerControllerOriginalImage] as? UIImage { 
     backgroundImage.contentMode = .ScaleAspectFill 
     backgroundImage.image = pickedImage 
    } 

    dismissViewControllerAnimated(true, completion: nil) 
} 

// Wallpaper function 

@IBAction func wallpaperMenuPressed(sender: AnyObject) { 

    imagePicker.allowsEditing = false 
    imagePicker.sourceType = .PhotoLibrary 

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

} 

とその背景として写真を選択できるようにする方法を考え出したそして、それは動作しますまだそれを保存する方法を見つけ出していないが、すぐに見つかるだろう。

しかし、すべてのビューにbackgroundImageがある場合、それらのすべてに対して同じイメージを設定するにはどうすればよいですか?

ありがとうございました

答えて

1

NSNotificationCenterを使用することをお勧めします。あなたはこのような場合には、セレクタ、UpdateBackgroundImageを実装する必要がありますそれらのビューコントローラのそれぞれにおいて

let nc = NSNotificationCenter.defaultCenter() 
nc.addObserver(self, selector: "UpdateBackgroundImage:", name: "BackgroundImageChanged", object: image) 

:あなたは通知をリッスン変更を適用する必要があり、あなたのビューコントローラのそれぞれにおいて

。あなたは、通知を投稿することができ、画像を保存した後

func UpdateBackgroundImage(notification: NSNotification) { 
    let backgroundImage = notification.userInfo!["image"] as UIImage 
    // Your code to assign image to background 
} 

:彼らは次のようになりますが、背景を更新する必要が新しいビューを追加すると

// Right after you assign backgroundImage.image = pickedImage 
let nc = NSNotificationCenter.defaultCenter() 
let myDict = [pickedImage, "image"] 
nc.postNotificationName("BackgroundImageChanged", object: nil, userInfo: myDict) 

NSNotificationCenterを使用してのいいところは、ということです画像はちょうど最初のビットを追加します。イメージを選択するコードを更新する必要はありません。

+0

これはうまくいくようですが、実装する方法がわかりません。 – Khoury

+0

画像を永続化する方法は分かりますか?私はnsuserdefaultsと関係があると分かっていますが、アプリケーションを終了すると、元の画像に戻されます – Khoury

+0

これは本当に別の質問です。ここに答えがあります:http://stackoverflow.com/questions/26171901/swift-write-image-from-url-to-local-file – user212514

1

あなたのアプリの共通機能があるBaseViewControllerを作成することをお勧めします。imageViewもあります。

imageViewも継承されるようにすべてのviewControllerフォームを継承し、設定することができます。BaseViewControllerから継承したすべてのviewControllerのすべてと同じになります。

+0

私はそれを行うことはできません私の意見は、それぞれ独自のコントローラファイルがありますが、あなたの助けを借りてありがとう:) – Khoury

関連する問題