Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios nib文件未在viewDidLoad中注册_Ios_Swift_Xib - Fatal编程技术网

Ios nib文件未在viewDidLoad中注册

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

我第一次尝试基于nib的项目,这里是我的步骤和nib区域快照

当前错误-
线程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文件中创建表视图单元格将解决此错误。

真是太棒了