当前位置: 首页 > 面试题库 >

无法将ViewController类型的值分配给UITextFieldDelegate类型的值?

燕野
2023-03-14
问题内容

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

/ChatApp/ViewController.swift:27:42:无法将“ ViewController”类型的值分配给“
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作为delegateUITextField
但是,你ViewController 是不是
一个UITextFieldDelegate。为了使您的课程成为此类委托,您需要采用UITextFieldDelegate协议。可以通过将其添加到您的类继承自/遵循的协议和类列表中来实现。在您的情况下,可以通过更改行来完成

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource

class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource, UITextFieldDelegate


 类似资料:
  • 问题内容: 更新到xcode 8 beta 6后,出现错误 无法将’()-> Void’类型的值分配给’(()-> Void)!’ 在以下func块的第三行: 关于修复的任何建议? 问题答案: 看来您的问题与此有关: SE-0103 尝试将您的方法标头追踪到: 与往常一样,来自新Beta的诊断消息是如此混乱和不足,但是将您的媒体资源设置为非可选将为您提供更多有用的信息。

  • 我尝试了几种解决方案,但都不管用

  • 你好,我在小部件上的以下代码中出错 参数类型'List 这是我的代码 我的代码与上面的图表插件不兼容吗?如何解决这个问题?

  • 问题内容: 请参见下面的自包含示例。编译器在最后一行(由标记为)报告错误,在该行中,我将实例分配给它(根据我的最佳判断)符合的协议类型。如何编译?我究竟做错了什么?还是这个编译器问题? 编辑: 即使我明确地向下转换了上面的返回类型(以便上面的代码片段的最后一行读取),如安东尼奥在调用函数时仍然存在编译错误: 问题答案: 首先,您想从devforums上读到规范的线程。您特别想跳过阅读jckarte

  • 我有一个问题,归结为试图将具有特定参数类型的函数分配给期望具有泛型类型的函数的变量: 游乐场版。 TypeScript给出以下错误: 类型“(v:string[]))= 这个错误对我来说没有多大意义,因为对于泛型,似乎是一个非常合理的类型。 有一个相关的问题具有相同的基本问题,但是答案是特定于该问题的情况的:为什么实现接口的TypeScript类不能分配给扩展接口的通用约束?