2017-04-20 11 views
-2

Ich versuche mich anzumelden und ich mache gerade Tests und ich versuche, wenn das Logbuch korrekt ist habe ich das geändert Titel der Schaltfläche, aber ich bekomme diesen Fehler: Wert des Typs '(Any) ->()' hat kein Mitglied 'SetTitle'. Dann hinterlasse ich Ihnen den Code und einen Screenshot.Swift3: Wert vom Typ '(Beliebig) ->()' hat kein Mitglied 'setTitle'

Ich brauche Hilfe, weil ich blockiert bin und ich kann nicht fortfahren. Alle Hilfe wird geschätzt. Vielen Dank.

enter image description here

Und dies ist mein Code

import UIKit 

class LogViewController: UIViewController { 

    @IBOutlet weak var _username: UITextField! 
    @IBOutlet weak var _password: UITextField! 

    @IBAction func _login_button(_ sender: Any) { 
     let username = _username.text 
     let password = _password.text 

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

     DoLogin(username!, password!) 
    } 



    func DoLogin(_ user:String, _ psw:String) 
    { 

     let url = URL(string: "http://localhost/bill/userLogin.php") 
     let session = URLSession.shared 

     let request = NSMutableURLRequest(url: url!) 
     request.httpMethod = "POST" 

     let paramToSend = "username=" + user + "&password=" + psw 
     request.httpBody = paramToSend.data(using: String.Encoding.utf8) 

     let task = session.dataTask(with: request as URLRequest, completionHandler: { 
       (data, response, error) in 
      guard let _:Data = data else 
      { 
       return 
      } 

      let json:Any? 
      do 
      { 
       json = try JSONSerialization.jsonObject(with: data!, options: []) 
      } 
      catch 
      { 
       return 
      } 

      guard let server_response = json as? NSDictionary else 
      { 
      return 
      } 

      if let data_block = server_response["data"] as? NSDictionary 
      { 
       if let session_data = data_block["session"] as? String 
       { 
        let preferences = UserDefaults.standard 
        preferences.set(session_data, forKey: "session") 

        DispatchQueue.main.async { 
         execute:self.LoginDone() 
        } 
       } 
      } 
     }) 
     task.resume() 
    } 

    func LoginDone() 
    { 
     _username.isEnabled = false 
     _password.isEnabled = false 
     _login_button.setTitle("Logout", for: .normal) 
    } 


    override func viewDidLoad() { 
     super.viewDidLoad() 


    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 


} 
+0

_login_button ist IBAction nicht IBOutlet des Knopfes –

+0

'_login_button' ist Funktion nicht der Knopfausgang, wenn Sie Ausgang mit dem gleichen Namen erklären, dann ändern Sie entweder Knopfname oder Funktion löst Ihren Fehler –

+0

OK danke, ändere ich das Funktion und es wird funktionieren. Danke Jungs – amr07

Antwort

2

Sie Problem haben, die mit _login_button verbunden ist, weil es @IBAction nicht @IBOutlet.

Um dieses Problem zu lösen, ziehen Sie den Ausgang aus dem Storyboard und verbinden Sie ihn mit der richtigen Datei.

Und als Eigenschaft der Schaltfläche festlegen.

Beispiel.

@IBOutlet weak var _login_button_outlet: UIButton! 

func LoginDone() 
{ 
    _username.isEnabled = false 
    _password.isEnabled = false 
    _login_button_outlet.setTitle("Logout", for: .normal) 
} 
+0

Danke, jetzt funktioniert es – amr07

+0

@ amr07 du bist immer welcme –

0

hallo versuchen Sie den Titel der _login_button einzustellen, die nicht auf die Schaltfläche seine die @IBAction Methode so zum Einstellen der Titel, den Sie @IBOutlet schwach var _login_button zu schaffen haben: UIButton !.

Verwandte Themen