Ios nib文件未在viewDidLoad中注册
我第一次尝试基于nib的项目,这里是我的步骤和nib区域快照 当前错误-Ios nib文件未在viewDidLoad中注册,ios,swift,xib,Ios,Swift,Xib,我第一次尝试基于nib的项目,这里是我的步骤和nib区域快照 当前错误-线程1:异常:“为标识符(单元格)注册的nib无效-nib必须正好包含一个顶级对象,该对象必须是UITableViewCell实例” 步骤1-我创建一个名为HotelNib的nib文件,并添加一个viewCotroller,创建一个名为HotelViewController:UIViewController的类,将其连接到viewController 步骤2-在nib中,向viewController添加tableView
线程1:异常:“为标识符(单元格)注册的nib无效-nib必须正好包含一个顶级对象,该对象必须是UITableViewCell实例”
步骤1-我创建一个名为HotelNib的nib文件,并添加一个viewCotroller
,创建一个名为HotelViewController:UIViewController
的类,将其连接到viewController
步骤2-在nib中,向viewController添加tableView,并为其提供约束
第3步-转到SceneDelegate
并添加下面的代码,因为我不想加载情节提要,同时从下拉列表中删除main
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-在nib区域中添加一个tableViewCell
,创建一个名为ItemViewCell:UITableViewCell
步骤6-添加@IBOutlet弱var tableView:UITableView代码>,在HotelView控制器中,通过控件+从tableView拖动到viewcontroller添加代理和数据源
步骤7-创建@ibvar-namelab:UILabel代码>位于ItemViewCell
第8步-我在HotelViewController中的代码,我就是无法克服,一个又一个关于nib无法注册的错误,请有人在这里指导
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文件中创建表视图单元格将解决此错误。在单个.xib文件中有多个视图也会导致此错误。在单独的.xib文件中创建表视图单元格将解决此错误。真是太棒了