2017-05-25 34 views

回答

1

當按鈕點擊後,在UserDefaults保存的標誌值:

UserDefaults.standard.set("1", forKey: "kIsButtonSelected") 
UserDefaults.standard.synchronize() 

當重新啓動應用程序,檢查值並設置按鈕圖像:

if let isButtonSelected = UserDefaults.standard.object(forKey: "kIsButtonSelected") as? String { 
    if isButtonSelected == "1" { 
     //set the second image 
    } 
} 

而且一更好的做法是爲按鈕的正常狀態設置第一個圖像,第二個爲選定的狀態。而剛剛設定的檢測標誌值時,該按鈕的狀態:

button.isSelected = true //the image will be changed to the second one automatically. 
+0

這是不是一個壞的方法,但最好將圖像名稱存儲爲關鍵字......然後,加載按鈕圖像時,只需將UD的值與圖像列表相匹配即可。這讓我有更多的靈活性,比如自定義頭像等等(這是我認爲OP會與之相匹配的地方) – Fluidity

+0

是的,我只是提供簡單的解決方案讓Francisco很快理解。我在回答中加入了一個更好的做法以供參考。 –

0

我會做這個,所以這樣如果需要的話,你可以使用超過1張圖片:

// Put a all of your images that you want here: 
var imageDictionary = ["smilyface": UIImage(named: "smilyface.png"), 
         "person" : UIImage(named: "person.png"), 
         // and so on... 
] 

// Use this whenever you want to change the image of your button: 
func setCorrectImageForButton(imageName name: String) { 
    UserDefaults.standard.set(name, forKey: "BUTTONIMAGE") 
} 

// Then use this to load the image to your button: 
// myButtonImage = grabCorrectImageForButton() 
func grabCorrectImageForButton() -> UIImage? { 

    guard let imageKey = UserDefaults.standard.string(forKey: "BUTTONIMAGE") else { 
    print("key not found!") 
    return nil 
    } 

    if let foundImage = imageDictionary[imageKey] { 
    return foundImage 
    } 
    else { 
    print("image not found!") 
    return nil 
    } 
} 
相關問題