我在 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 2 时 Alamofire 关闭参数错误
Swift 错误:“UIButton”类型的值没有成员“文本”[关闭]