TableView进入ViewController视图不调用Swift函数

时间:2016-01-19 10:42:20

标签: ios swift function uitableview

当我添加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
    }
}

2 个答案:

答案 0 :(得分:1)

在storyBoard中的viewController中拖动tableView

enter image description here

之后以这种方式连接IBOutlet

enter image description here

之后,在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分配delegatedataSourcehttps://developer.apple.com/library/mac/recipes/xcode_help-IB_objects_media/Chapters/set_object_delegate.html