无法将typesViewController的值分配给types为UITextFieldDelegate的值?

这是我写这行的错误self.MessageTextField.delegate = self

/ChatApp/ViewController.swift:27:42:无法将types'ViewController'的值分配给types为'UITextFieldDelegate?'的值

这是我的Swift代码(ViewerController.swift):

 // // ViewController.swift // ChatApp // // Created by David Chen on 15/4/12. // Copyright (c) 2015年 cwsoft. All rights reserved. // import UIKit import Parse class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { var messagesArray:[String] = [String]() @IBOutlet weak var MessageTableView: UITableView! @IBOutlet weak var ButtonSend: UIButton! @IBOutlet weak var DockViewHeightConstraint: NSLayoutConstraint! @IBOutlet weak var MessageTextField: UITextField! override func viewDidLoad() { super.viewDidLoad() // self.MessageTableView.delegate = self self.MessageTableView.dataSource = self //Set delegate self.MessageTextField.delegate = self self.messagesArray.append("Test 1") self.messagesArray.append("Test 2") self.messagesArray.append("Test 3") } @IBAction func ButtonSendPressed(sender: UIButton) { self.view.layoutIfNeeded() UIView.animateWithDuration(0.5, animations: { self.DockViewHeightConstraint.constant = 400 self.view.layoutIfNeeded() }, completion: nil) } //MARK : TextField Delegage Methods //MARK : Table View Delegate Methods func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell { let cell = self.MessageTableView.dequeueReusableCellWithIdentifier("MessageCell") as! UITableViewCell cell.textLabel?.text = self.messagesArray[indexPath.row] return cell } func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int { return messagesArray.count } } 

self.MessageTextField.delegate = self导致错误,因为您尝试将self分配为UITextField
但是你的ViewController 不是一个UITextFieldDelegate 。 为了让你的类成为这种代理,你需要采用UITextFieldDelegate协议 。 这可以通过将其添加到您的类inheritance/符合的协议和类的列表来实现。 在你的情况下,通过改变行

 class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource 

 class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate 

声明你的类符合UITextFieldDelegate协议,并实现你需要的任何协议方法。

 class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate { ... }