为什么我收到此错误?
由于未捕获的异常而终止应用 'NSInternalInconsistencyException',原因:' - [UITableViewController loadView]加载了“pB1-re-lu8-view-o7U-YG-E7m”笔尖,但没有得到 的UITableView'。
这是我的代码:
class FriendListTableViewController: UITableViewController{
var objects = NSMutableArray()
var dataArray = [["firstName":"Debasis","lastName":"Das"],["firstName":"John","lastName":"Doe"],["firstName":"Jane","lastName":"Doe"],["firstName":"Mary","lastName":"Jane"]]
override func viewDidLoad() {
super.viewDidLoad()
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
// MARK: - Table View
override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
return 1
}
override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return dataArray.count
}
override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell
let object = dataArray[indexPath.row] as NSDictionary
(cell.contentView.viewWithTag(10) as! UILabel).text = object["firstName"] as? String
(cell.contentView.viewWithTag(11) as! UILabel).text = object["lastName"] as? String
return cell
}
override func tableView(tableView: UITableView, canEditRowAtIndexPath indexPath: NSIndexPath) -> Bool {
// Return false if you do not want the specified item to be editable.
return false
}
我的故事板是这样的:
答案 0 :(得分:18)
我曾经一次面对同样的问题,这是一个愚蠢的错误,我已经将UITableViewController
的子类化,我在UITableView
中添加了UIViewController
从您的故事板图片中,如果您使用UIViewController
代替UITableViewController
,则可以解决此问题,只需尝试这种方法就可以解决您的问题,例如
class FriendListTableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
答案 1 :(得分:2)
SWIFT 2更新
我尝试了@Viralsavaj的答案,但是直到我将tableView“连接”起来作为ViewController中故事板的插座,它才对我起作用。
像这样:@IBOutlet weak var tableView: UITableView!
还可以在@Viralsavaj中提到这个:
class TableViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
我也特别使用了这个链接帮助:How to reference tableView from a view controller during a segue
只需将tableView拖到ViewController中,然后将其作为插座即可。然后,您可以引用其属性,例如self.tableView.reloadData()
。
在我将tableView添加为引用插座之前,此属性以及引用tableView
的其他属性都给了我错误。
希望这对未来的人有所帮助。
答案 2 :(得分:1)
我在使用Swift 2,Xcode 7.2时遇到了这个问题,我将Storyboard
更改为UITableViewController
拖到自定义Table View
类,然后我拖了一个View Controller
到View
。我没有意识到我把它作为原始View Controller
Storyboard
的{{1}}的一个孩子放在View
上。
我只是删除了getIntialState
并再次添加了Table View作为Super View的第一个子节点。