iOS开发 - 无法指定“ViewController”类型的值来键入“UITableViewController”

时间:2016-02-09 08:52:28

标签: ios iphone swift

我正在学习为iOS开发,我不太了解它。我正在关注这个tutorial

在ViewController上我有这段代码:

class ViewController: UIViewController {

    var feedItems: NSArray = NSArray()                      //Array de localizaciones
    var SelectedLocation: LocationModel = LocationModel()   //Referencia al modelo
    @IBOutlet weak var listTableView: UITableView!          //LIstView

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        //Inicializamos HomeModel

        //Delegamos a la vista los métodos de la tabla para rellenarla
        self.listTableView.delegate = self
        //Establecemos que la vista será el dataSource de la tabla
        self.listTableView.dataSource = self

        //Instanciamos el HomeModel, su dataSource y delegate para el tableView
        let homeModel = HomeModel()
        homeModel.delegate = self
        homeModel.downloadItems()
    }

    //implementamos el método del protocolo de HomeModel, en el guardamos los items que recibe a través
    //de delegation y llamamos a reloadData del tableView que hará que se active el método delegado
    func itemsDownloaded(items: NSArray) {

        feedItems = items
        self.listTableView.reloadData()
    }


    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        // Return the number of feed items
        return feedItems.count

    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        // Retrieve cell
        let cellIdentifier: String = "BasicCell"
        let myCell: UITableViewCell = tableView.dequeueReusableCellWithIdentifier(cellIdentifier)!
        // Get the location to be shown
        let item: LocationModel = feedItems[indexPath.row] as! LocationModel
        // Get references to labels of cell
        myCell.textLabel!.text = item.address

        return myCell
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }


}

当我尝试编译时,我得到错误: Cannot assign value of type 'ViewController' to type 'UITableViewController只是在viewDidLoad函数内部。我知道错误意味着什么,系统无法转换隐式类型。但是,我该如何修复错误?你能救我吗?

提前致谢。

2 个答案:

答案 0 :(得分:4)

在您的类中,您实现了Tableview的委托和数据源方法。但是您没有在班级中添加委托名称。

  

声明您的类符合UITableViewDataSource, UITableViewDelegate协议并实现您需要的任何协议方法。

更改此

  class ViewController: UIViewController
{

进入

 class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate
{

答案 1 :(得分:1)

在ViewController.m中,只需启动类定义即可添加 UITableViewDelegate UITableViewDataSource 以逗号分隔,如下所示:

   class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

      // your code will be here

   }