2017-04-21 57 views
0

我想比較一下按鈕中的標題,以便如果與另一個按鈕進行比較,它會執行某個操作。我使用.setTitle函數,但我認爲在swift3中它給出了錯誤,我無法找到原因。然後,我留下一個錯誤的信息,以便更容易看到它以及代碼本身。感謝您的幫助swift3中的Button.titleLabel錯誤

enter image description here

@IBAction func _login_button(_ sender: Any) 
{ 
    if(_login_button.titleLabel?.text == "OKEY") 
    { 
     let preferences = UserDefaults.standard 
     preferences.removeObject(forKey: "session") 

     LoginToDo() 
     return 
    } 

    let username = _username.text 
    let password = _password.text 

    if(username == "" || password == "") 
    { 
     return 
    } 

    DoLogin(username!, password!) 
} 
+0

這是因爲'sender'您使用的是行動。它應該是'UIButton'而不是'Any' –

+0

請檢查IBOutlets和IBActions的含義,你使用錯了。 –

回答

3

改變你的@IBAction func _login_button(_ sender: Any)需要鍵入從任意投地的UIButton@IBAction func _login_button(_ sender: UIButton)

@IBAction func _login_button(_ sender: UIButton) 
     { 
     if(sender.titleLabel?.text == "OKEY") 
     { 
    } 
} 
0

你需要如下拿到按鈕,現在你接入功能名稱,而不是發送

@IBAction func _login_button(_ sender: Any) 
     let button: UIButton = sender as! UIButton 


     if(button.titleLabel?.text == "OKEY") 
     { 
    } 
} 
+0

@IBAction FUNC _login_button(_發件人:任何){ 如果((發送者作爲AnyObject).titleLabel ??文本== 「OKEY」。) { 設偏好= UserDefaults.standard preferences.removeObject(forKey: 「session」) LoginToDo() return } –

+0

Swift糾正你寫給我的東西,並告訴我這樣說,好嗎? –

+0

爲什麼你採取了太多的代碼,我優化你的答案, –

0

_login_button是@IBAction你必須創建按鈕@IBOutlet的按鈕

0

如果按照屏幕快照出現此錯誤,則需要從Any輸入到UIButton,然後使用titleLabel屬性。