ファイルからイメージを読み込むのに愚かな問題があります。 UITabBarControllerに2つのビューを配置しました。ファイルを書き直してからイメージをロードする - UIImage
最初のビューでは、ユーザーはフォトライブラリまたはカメラから画像を読み込むことができます。 2番目のビューはこの写真を提示します。このファイルはサーバー上にあります。ユーザーが画像サーバーを選択しなかった場合、カスタム画像が送信されます。アップロードされた写真がある場合、ユーザーの画像がプッシュされます。
ユーザーがタップすると、オプション付きのメニューが表示されます。たとえば、写真ライブラリから写真を撮ることにします。ユーザーが画像を撮影した後:
func imagePickerController(picker: UIImagePickerController, didFinishPickingImage image: UIImage!, editingInfo: [NSObject : AnyObject]!) {
self.saveUserImage(userID, imageData: UIImagePNGRepresentation(image)!)
apiManager.userUploadProfile(userID, imageData: UIImagePNGRepresentation(image)!)
userImageView.image = image
}
func saveUserImage(userUUID: String, imageData: NSData) {
let path = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).last
let savePath = path! + "/\(userUUID)-user.png"
NSFileManager.defaultManager().createFileAtPath(savePath, contents: imageData, attributes: nil)
}
この後、ユーザーは選択した画像を見ることができ、すべてがokeyです。ユーザー変更タブでは、2番目のビューですべてのデータが更新され、サーバーからすべてのイメージとデータが再度ダウンロードされます。残念ながら、古いユーザーイメージを含むイメージは更新されず、古いイメージが残っています。
最初のタブ画像に戻ってくると、数秒後に古い画像に戻ります。
私がサーバーをチェックしていると新しいアップロードされた画像があり、それもアプリケーションコンテナに存在します。アプリを再起動すると、すべてが完全に機能します。
このイメージはメモリに保存されていて、iOSは古いバージョンをRAMや他のスワップから取得しているようです。どのようにUIImageViewをリフレッシュし、現在の保存画像を表示しますか?
EDIT: 画像
func userProfilePicture(userId: String) -> UIImage {
let cacheDirectory = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true).last
let savePath = cacheDirectory! + "/\(userId)-user.png"
if NSFileManager.defaultManager().fileExistsAtPath(savePath) {
if let image = UIImage(named: savePath) {
return image
}
}
return UIImage(named: "test_avatar")!
}
はい、アップロード後にダウンロードしていますが、アプリのコンテナを確認しているときに新しい画像が入っています。たぶん私は通知によってすべての画像をリフレッシュします...私はあなたの方法を試してください:) – Dzeremix
もしそれがうまくいけば答えを受け入れたかどうか私に知らせてください:P私はあなたを助け続けるでしょう。 – Timmy
残念ながら、それは動作していません。ファイルからUIImageViewをリフレッシュするたびに、古い画像が取得されます。 – Dzeremix