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!
使用 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!