present() 方法抛出 'Could not load NIB in bundle: 'NSBundle

present() method throws 'Could not load NIB in bundle: 'NSBundle

使用 xCode 8 我创建了两个 TableViewController。我正在尝试将数据从一个 TableViewController 中的选定单元格传递到第二个。

override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath){        
    let currentCell = tableView.cellForRow(at: indexPath) as! WorkOutCell
    let workout = WorkOut()
    selectedWorkout = workout.getWorkOutByName(workoutName: currentCell.workoutNameLabel.text!)
    let evc = ExerciseViewController(nibName: "ExerciseViewController", bundle: nil)
    evc.selectedWorkout = selectedWorkout //sets the selected workout value in ExerciseViewControler
    print(evc.nibName as Any) //prints Optional("ExerciseViewController")
    present(evc, animated: true, completion: nil) //throws exception
}

当我对此进行调试时,数据会传递给 ExerciseViewController,这样似乎可以正常工作。打印行选择 ExerciseViewController 作为 nibName,但是当前方法抛出异常,它找不到 ExerciseViewController 的 nibName。

2018-02-21 06:00:43.786 Monthly HIIT[1994:132476] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle (loaded)' with name 'ExerciseViewController''

我对这个问题感到困惑。我将文件添加到构建路径,但没有用。其他问题建议添加 XIB 文件,但通过挖掘 XIB 文件似乎与我创建的情节提要无关(尽管我很容易出错)。非常感谢任何帮助或建议。

谢谢

当您说您使用的是故事板而不是 XIB(以前称为 NIB)文件时,您给出了错误的最大提示。

尝试替换:

let evc = ExerciseViewController(nibName: "ExerciseViewController", bundle: nil)

let evc = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("ExerciseViewController") as ExerciseViewController

Here is a tutorial 可能会有帮助。

为自定义单元格试试这个 (swift 4)

Add below code in => func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell

        var cell = tblView.dequeueReusableCell(withIdentifier: "cell") as? CustomCell

        if cell == nil
        {
            tblView.register(UINib(nibName: "YourNIBname/XIBname", bundle: nil), forCellReuseIdentifier: "cell")
            cell = tblView.dequeueReusableCell(withIdentifier: "cell") as? CustomCell
        }
        return cell!