我在 swift 3 中有一个错误 [关闭]

Posted

技术标签:

【中文标题】我在 swift 3 中有一个错误 [关闭]【英文标题】:I've got an error in swift 3 [closed] 【发布时间】:2017-08-21 08:39:55 【问题描述】:

我是 swift 3 的新手,现在我遇到了一个错误,我找不到答案... 我想在我的自定义设计中制作一个表格视图,以及我想注册我的 xib 文件的部分。

//  ViewController.swift
//  Flash Chat

import UIKit
import Firebase

class ChatViewController: UIViewController , UITableViewDelegate , UITableViewDataSource 

    @IBOutlet var heightConstraint: NSLayoutConstraint!
    @IBOutlet var sendButton: UIButton!
    @IBOutlet var messageTextfield: UITextField!
    @IBOutlet var messageTableView: UITableView!

    override func viewDidLoad() 
        super.viewDidLoad()

        messageTableView.delegate = self
        messageTableView.dataSource = self

        messageTableView.register(UINib(nibName : "MessageCell" , Bundle : nil), forCellReuseIdentifier: "customMessageCell")
    

    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell 
        let cell = tableView.dequeueReusableCell(withIdentifier: "customMessageCell", for: indexPath) as! CustomMessageCell
        let messageArray = ["First Message", "Second Message", "Third Message"]
        cell.messageBody.text = messageArray[indexPath.row]
        return cell
    

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int   
        return 3  
    

    @IBAction func sendPressed(_ sender: AnyObject) 
    

    @IBAction func logOutPressed(_ sender: AnyObject)     
        do 
            try FIRAuth.auth()?.signOut()    
         catch    
            print(error)     
        

        guard (navigationController?.popToRootViewController(animated: true)) != nil
            else 
                print("ther is no view controller")
                return
        
    
 

【问题讨论】:

【参考方案1】:

是拼写错误,在 init(nibName:bundle:) 中调用的初始化程序不是 init(nibName:Bundle:)

      messageTableView.register(UINib(nibName : "MessageCell" , bundle : nil), forCellReuseIdentifier: "customMessageCell")

或使用

 messageTableView.register(UINib.init(nibName: "MessageCell", bundle: nil), forCellReuseIdentifier: "customMessageCell")

不是

       messageTableView.register(UINib(nibName : "MessageCell" , Bundle : nil), forCellReuseIdentifier: "customMessageCell")

【讨论】:

非常感谢 @sasansoroush - 欢迎我的兄弟,接受任何一个答案【参考方案2】:

第二个参数标签必须是“bundle”,而不是“Bundle”,参见https://developer.apple.com/documentation/uikit/uinib/1614135-init。

【讨论】:

非常感谢【参考方案3】:

你在UINib初始化中打错了,替换

UINib(nibName : "MessageCell" , Bundle : nil)

UINib(nibName : "MessageCell" , bundle : nil)

【讨论】:

非常感谢【参考方案4】:

纠正这个

 messageTableView?.register(UINib.init(nibName: "MessageCell", bundle: nil), forCellReuseIdentifier: "customMessageCell")

【讨论】:

【参考方案5】:

将您的手机注册声明更改为以下内容:

messageTableView.register(UINib.init(nibName: "MessageCell",
                                       bundle: nil),
                            forCellReuseIdentifier: "customMessageCell") //Just copy-paste this 

您为UINib 构造函数使用了错误的方法参数标签。将 Bundle 更改为 bundle 将起作用。错字。

【讨论】:

欢迎。 @sasansoroush

以上是关于我在 swift 3 中有一个错误 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

Swift:无法让 UITextField 关闭键盘

升级到 swift 2 时 Alamofire 关闭参数错误

Xcode 8.3 不支持 Swift 2.3 [关闭]

Swift 错误:“UIButton”类型的值没有成员“文本”[关闭]

Swift 3 错误“无法调用非函数类型 'UITableView!' 的值” [关闭]

在后台点击 Swift 时禁用关闭弹出框