使用swift创建表视图

时间:2014-10-13 13:45:48

标签: ios swift

我一直在尝试使用swift使用xcode 6和ios8创建一个表格视图,但我在模拟器上没有得到任何东西,只是显示为空(白色)。

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    var myArr = ["one","two","three","four","five"]

    @IBOutlet weak var table: UITableView!

    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 tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return myArr.count
    }


    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        var cell: UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "cell")

        cell.textLabel?.text = self.myArr[indexPath.row]


        return cell;
    }

}

我甚至试过拖动一些元素,如按钮,开关等,我在模拟器上没有得到任何东西。如果我下载并运行其工作的任何代码。

5 个答案:

答案 0 :(得分:1)

“接口”构建器中是否设置了dataSource table?您也可以在代码中执行此操作:

override func viewDidLoad() {
    super.viewDidLoad()
    table.dataSource = self    
}

答案 1 :(得分:1)

在这里我的代码,我不明白前一个错误,但我创建了一个新的项目,然后它工作。 我只是将表视图拖到viewcontroller并分配了委托和数据源 然后来到viewcontroller.swift并尝试了

import UIKit

class ViewController: UIViewController {

    var items = ["a","b","c"]

    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 tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        return self.items.count
    }

    func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 2
    }


    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        var cell:UITableViewCell = UITableViewCell(style: UITableViewCellStyle.Default, reuseIdentifier: "myCell") as UITableViewCell
        cell.textLabel?.text = self.items[indexPath.row]
        return cell
    }

}

答案 2 :(得分:0)

您在numberOfSectionsInTableView协议中缺少UITableViewDataSource

func numberOfSectionsInTableView(tableView: UITableView) -> Int {
    return 1
} 

答案 3 :(得分:0)

您的表格'委托没有设定。添加:

table.delegate = self

到上面的viewDidLoad

table.dataSource = self

答案 4 :(得分:0)

您错过了委托和dataSource,请在viewDidLoad

中添加以下行

table.delegate = self

table.dataSource = self