这是我的UITableViewController
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cellId: String = "Cell"
let cell = tableView.dequeueReusableCellWithIdentifier(cellId, forIndexPath: indexPath) as UITableViewCell
let data: NSManagedObject = list[indexPath.row] as! NSManagedObject
let nom = data.valueForKey("nom") as! String
let temps = data.valueForKey("temps") as! String
cell.textLabel?.text = "\(nom)".uppercaseString
cell.detailTextLabel?.text = "à fait : \(temps)"
cell.detailTextLabel?.font = cell.detailTextLabel?.font.fontWithSize(15.5)
return cell
}
这是我提出UITableViewController的行动
func seeAllScore(){
--------- when I put it in comment My App Work Correctly
let tableView = AllScoreViewController()
let navigationController = UINavigationController(rootViewController: tableView)
self.presentViewController(navigationController, animated: true, completion: nil)
--------- when I put it in comment My App Crash
let vc:AllScoreViewController = self.storyboard!.instantiateViewControllerWithIdentifier("AllScore") as! AllScoreViewController
self.presentViewController(vc, animated: true, completion: nil)
}
这是我的输出
2016-02-14 23:01:39.350 WhereIsCage[42787:16030964] *** Assertion failure in -[UITableView dequeueReusableCellWithIdentifier:forIndexPath:], /BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3512.30.14/UITableView.m:6564
2016-02-14 23:01:39.358 WhereIsCage[42787:16030964] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'unable to dequeue a cell with identifier Cell - must register a nib or a class for the identifier or connect a prototype cell in a storyboard'
*** First throw call stack:
目标是让UINavigationBar成为我的UITableViewCotroler
答案 0 :(得分:0)
我建议您在故事板中定义了表视图控制器,但是直接用let tableView = AllScoreViewController()
实例化它。
而不是这样做,你应该从故事板上加载它。看起来你也试过了(我不清楚该测试是否成功)......
您当前的实例化会创建一个表视图,但不知道已注册的单元格,因此会出错。
答案 1 :(得分:0)
当你这么说时
let tableView = AllScoreViewController()
您只是创建一个没有与故事板连接的新视图控制器实例。这意味着没有关于原型单元的信息,并且重用标识符未被注册。
我知道您实际想要实现的是将您的表视图嵌入到导航控制器中。要做到这一点:
现在,您可以在故事板中使用tableview控制器实例化导航控制器:
let navvc = self.storyboard!.instantiateViewControllerWithIdentifier("navController") as! UINavigationController
// If you want to access the AllScoreViewController
let scoreVC=navvc.topViewController as! AllScoreViewController
self.presentViewController(navvc, animated: true, completion: nil)