当我添加A TableViewController
时,一切正常,因为我覆盖了这些函数。
我已经制作了正式的苹果教程,就像下面的代码一样。
我错过了什么或者它是一个错误?
class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
var data = ["Ferrari","Porsche"]
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int{
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return data.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
let cell = tableView.dequeueReusableCellWithIdentifier("reuseIdentifier", forIndexPath: indexPath)
cell.textLabel?.text = data[indexPath.row]
return cell
}
}
答案 0 :(得分:1)
在storyBoard中的viewController中拖动tableView
:
之后以这种方式连接IBOutlet
:
之后,在viewDidLoad
方法中添加此代码:
//assign delegate and datasource
tableview.dataSource = self
tableview.delegate = self
//register your tableview cell
self.tableview.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
将您的ReusableCellIdentifier
与"cell"
更改为cellForRowAtIndexPath
,它将如下所示:
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
最终代码将是:
import UIKit
class ViewController: UIViewController,UITableViewDataSource,UITableViewDelegate {
var data = ["Ferrari","Porsche"]
@IBOutlet weak var tableview: UITableView!
override func viewDidLoad() {
super.viewDidLoad()
tableview.dataSource = self
tableview.delegate = self
self.tableview.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")
}
func numberOfSectionsInTableView(tableView: UITableView) -> Int{
return 1
}
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{
return data.count
}
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath)
cell.textLabel?.text = data[indexPath.row]
return cell
}
}
有关更多信息,请参阅THIS教程。
答案 1 :(得分:0)
您缺少tableView
的代表和参考。
将tableView与您的类连接,然后在viewDidLoad中添加以下内容:
self.yourTableView.delegate = self
self.yourTableView.dataSource = self
就是这样。
您也可以通过IB分配delegate
和dataSource
:https://developer.apple.com/library/mac/recipes/xcode_help-IB_objects_media/Chapters/set_object_delegate.html