簡體   English   中英

iOS,Swift-如何禁用UIButton?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM