[英]iOS, Swift -How disable a UIButton?
我目前正在開發一個使用Parse作為后端系統的應用程序。 我想實現“喜歡”功能。 這是我的代碼
@IBAction func ButtonPressed(sender: AnyObject) {
var query = PFQuery(className: "Content")
query.getObjectInBackgroundWithId(object.objectId, block: { (obj:PFObject!, error:NSError!) -> Void in
if error != nil{
println("Update error \(error.localizedDescription)")
}else{
var likesNumber = obj.objectForKey("Likes")[0] as Int
obj["Likes"] = [likesNumber + 1]
self.likeslab.setTitle("\(likesNumber + 1) likes", forState: UIControlState.Normal)
self.likesButton.enabled = false
obj.save()
}
})
}
不幸的是,該代碼運行良好,我遇到了一個問題:用戶觸摸按鈕后,我想禁用它(以避免來自同一用戶的多次贊)。 我嘗試在以下行上執行此操作:
self.likesButton.enabled = false
並且它正在工作,但是如果用戶離開視圖然后返回,則該按鈕再次啟用。 非常感謝您的幫助 !
這是必須在服務器端提供的東西。 服務器必須向您提供有關用戶是否喜歡某物的信息。 然后,您可以在控制器上的viewWillAppear:
方法中設置enabled
。
您的代碼中有些東西聞起來很不好,例如:
var likesNumber = obj.objectForKey("Likes")[0] as Int
obj["Likes"] = [likesNumber + 1]
似乎不是在服務器上增加點贊的次數,而是在客戶端上進行。 有很多原因導致此功能無法正常運行,就像您期望的那樣。
您需要的是服務器上的數據庫,該數據庫將跟蹤哪個用戶喜歡什么。 您不想只保存喜歡的數量,而是想要保存喜歡該對象的用戶列表。
您應該以某種方式禁用按鈕的內存。
一個示例是在ViewController中添加一個標志,該標志在禁用或啟用UIButton時會更新。 因此,當您使用self.likesButton.enabled = false
更新按鈕時, self.likesButton.enabled = false
標志值更改為false。
然后在ViewWillAppear
添加以下行:
if flag { self.likesButton.enabled = true } else { self.likesButton.enabled = false }
顯然,您的標志變量應添加為類變量。
希望這對您有幫助。
這是我為初學者添加的代碼:
var isButtonEnabled:Bool = true
override func viewWillAppear(animated: Bool) {
super.viewWillAppear(animated)
self.isButtonEnabled = NSUserDefaults.standardUserDefaults().valueForKey("isButtonEnabled")
if(isButtonEnabled){
self.likesButton.enabled = true
}
else{
self.likesButton.enabled = false
}
}
@IBAction func ButtonPressed(sender: AnyObject) {
var query = PFQuery(className: "Content")
query.getObjectInBackgroundWithId(object.objectId, block: { (obj:PFObject!, error:NSError!) -> Void in
if error != nil{
println("Update error \(error.localizedDescription)")
}else{
var likesNumber = obj.objectForKey("Likes")[0] as Int
obj["Likes"] = [likesNumber + 1]
self.likeslab.setTitle("\(likesNumber + 1) likes", forState: UIControlState.Normal)
self.likesButton.enabled = false
obj.save()
}
self.likesButton.enabled = false
NSUserDefaults.standardUserDefaults().setObject(false, forKey: "isButtonEnabled")
NSUserDefaults.standardUserDefaults().synchronize()
})
}
斯威夫特3.0
btnEnviar.isEnabled = false
要么
btnEnviar.isUserInteractionEnabled = false
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.