无法将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 { ... }