我正在学习为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函数内部。我知道错误意味着什么,系统无法转换隐式类型。但是,我该如何修复错误?你能救我吗?
提前致谢。
答案 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
}