使用xCode 8我创建了两个TableViewControllers。我试图将数据从一个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每月HIIT [1994:132476] ***终止应用程序 由于未被捕获的异常' NSInternalInconsistencyException',原因: '无法在捆绑中加载NIB:' NSBundle (加载)'名字' ExerciseViewController''
我对这个问题很难过。我将文件添加到构建路径,但是没有用。其他问题建议添加XIB文件,但是从挖掘XIB文件看起来与我创建的故事板无关(尽管我很容易出错)。非常感谢任何帮助或建议。
由于
答案 0 :(得分:2)
当你说你使用故事板而不是XIB(以前称为NIB)文件时,你给出了最大的错误提示。
尝试更换:
let evc = ExerciseViewController(nibName: "ExerciseViewController", bundle: nil)
与
let evc = UIStoryboard(name: "Main", bundle: nil).instantiateViewControllerWithIdentifier("ExerciseViewController") as ExerciseViewController
Here is a tutorial可能有所帮助。
答案 1 :(得分:0)
尝试使用自定义单元格(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!