UITableViewController loadView加载了“ xxx-view-xxx”笔尖,但未获取UITableView

时间:2018-08-01 13:41:39

标签: ios swift xcode uitableview tableview

我正在尝试创建一个包含3个单元格的表的应用程序

我想扩展UITableViewController而不是UIViewController,所以我提出了

//
//  TodoListTableViewController.swift
//  ListHue
//
//  Copyright © 2018 LR Web Design. All rights reserved.
//

import UIKit

class TodoListTableViewController: UITableViewController {

    let items = ["Find Mike", "Buy Eggos", "Kill Demogorgon"]

    //    viewDidLoad
    override func viewDidLoad() {
        super.viewDidLoad()
    }

    override func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return items.count
    }

    override func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {

        let cell = tableView.dequeueReusableCell(withIdentifier: "ToDoItemCell", for: indexPath)

        cell.textLabel?.text = items[indexPath.row]

        return cell
    }

}

启动我的应用程序时不断出现此错误

2018-08-01 09:26:53.151150-0400 ListHue[4673:207209] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UITableViewController loadView] loaded the "r5i-1Z-XpF-view-oGI-0m-9XK" nib but didn't get a UITableView.'


“身份”标签 enter image description here


“连接”标签

enter image description here


这是我的全部内容的屏幕截图

enter image description here

如何进一步调试呢?

2 个答案:

答案 0 :(得分:3)

问题是您将表拖动到UIViewController实例,但是必须从对象库中拖动UITableViewController

tableViewController的根视图应该是UITableView,而不是UIView,例如UIViewController

enter image description here

答案 1 :(得分:1)

好吧,实际上UITableViewController期望其'view'属性为UITableView类型。在情节提要中创建一个最简单的方法是使用集合中的相应对象(右下角的面板)。就您而言,您似乎是从集合中提取了UIViewController,然后在其上添加了UITableView

所以您现在有两个选择:

  1. 解决此问题的最简单方法是删除现有的并从集合中获取Table view controller
  2. 您还可以删除控制器的根视图,将表视图放在其位置,然后将其连接到控制器的view属性。并且在这种情况下,请不要忘记也要连接表视图的委托和数据源