2017-04-21 62 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属性。