问题描述
我第一次尝试基于笔尖的项目,这是我的步骤和笔尖区域快照
当前错误-Thread 1: Exception: "invalid nib registered for identifier (Cell) - nib must contain exactly one top level object which must be a UITableViewCell instance"
步骤1-我创建一个名为HotelNib的笔尖文件,并添加一个viewCotroller
,创建一个名为HotelViewController: UIViewController
的类,并将其附加到viewController
第2步-在笔尖中将tableView添加到viewController,为其赋予约束条件
第3步-转到SceneDelegate
并添加以下代码,因为我不希望加载情节提要,也请从下拉菜单中删除主要内容
guard let winScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: winScene)
guard let homeController = Bundle.main.loadNibNamed("HotelNib",owner: self,options: nil)?.first as? HotelViewController else { return }
window?.rootViewController = homeController
window?.makeKeyAndVisible()
第4步-我运行项目,它运行良好
第5步-在笔尖区域添加tableViewCell
,创建一个名为ItemViewCell: UITableViewCell
的类
第6步-在HotelView Controller中添加@IBOutlet weak var tableView: UITableView!
,通过控件添加委托和数据源,然后从tableView拖动到viewcontroller
第7步-在@IBOutlet weak var nameLabel: UILabel!
中创建ItemViewCell
第8步-我在HotelViewController中的代码,我只是无法克服,关于笔尖无法注册的错误提示错误,
class HotelViewController: UIViewController,UITableViewDelegate,UITableViewDataSource {
@IBOutlet weak var tableView: UITableView!
var restaurantNames = ["Cafe Deadend","Homei","Teakha","Cafe Loisl","Petite Oyster","For Kee Restaurant","Po's Atelier","Bourke Street Bakery","Haigh's Chocolate","Palomino Espresso","Upstate","Traif","Graham Avenue Meats And Deli","Waffle & Wolf","Five Leaves","Cafe Lore","Confessional","Barrafina","Donostia","Royal Oak","CASK Pub and Kitchen"]
func tableView(_ tableView: UITableView,numberOfRowsInSection section: Int) -> Int {
restaurantNames.count
}
func tableView(_ tableView: UITableView,cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell",for: indexPath) as! ItemViewCell
cell.nameLabel.text = restaurantNames[indexPath.row]
return cell
}
override func viewDidLoad() {
super.viewDidLoad()
print("right load")
tableView.delegate = self
tableView.dataSource = self
let nib = UINib(nibName: "HotelNib",bundle: nil)
tableView.register(nib,forCellReuseIdentifier: "Cell") //always fails here
// Do any additional setup after loading the view.
}
}
解决方法
在单个.xib文件中具有多个视图也会导致此错误。在各自独立的.xib文件中创建表格视图单元格将解决此错误。