首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表视图注册- UINib参数标签'(nibName:,Bundle:)‘不匹配任何可用的重载

表视图注册- UINib参数标签'(nibName:,Bundle:)‘不匹配任何可用的重载
EN

Stack Overflow用户
提问于 2017-09-12 12:01:20
回答 2查看 1.1K关注 0票数 1

试图将自定义单元格添加到我的项目中,下面的代码将在寄存器行返回错误UINib Argument labels '(nibName:, Bundle:)' do not match any available overloads

Xcode 9 beta 6

代码语言:javascript
复制
@IBOutlet var MTableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()

    MTableView.delegate = self as? UITableViewDelegate
    messageTableView.dataSource = self

    MTableView.register(UINib(nibName: "MCell", Bundle: nil), forCellReuseIdentifier: "CustomCell")

}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-12 12:02:00

你把大写和小写混为一谈。在Swift中,所有函数参数都以小写字母开头。变化

代码语言:javascript
复制
UINib(nibName: "MCell", Bundle: nil)

代码语言:javascript
复制
UINib(nibName: "MCell", bundle: nil)
票数 6
EN

Stack Overflow用户

发布于 2017-09-12 12:11:36

简单地说,您可以使用泛型来避免此类错误。

代码语言:javascript
复制
extension UITableView {
  func registerNib<T: UITableViewCell> (_ type: T.Type) {
    let nib = UINib(nibName: T.className, bundle: nil)
    self.register(nib, forCellReuseIdentifier: T.className)
  }
 }

现在您可以简单地按以下方式注册单元格:

代码语言:javascript
复制
self.tableView.registerNib(MyInfoViewCell.self)

我使用这个扩展https://github.com/sanjaymhj/SwiftyStarters/blob/master/Extensions/UIView%2BExtension.swift来避免这种错误。您可以看到在readme https://github.com/sanjaymhj/SwiftyStarters/blob/master/README.md#extensions中注册单元格和去队列的用途。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46175833

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档