TableView不会重新加载数据

时间:2015-09-12 09:11:17

标签: ios swift tableview

我只是尝试使用从数组中提取的新项重新加载TableView,而tableView不会重新加载新项。这是代码。请帮忙吗?
    导入UIKit

    class ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource {

        @IBOutlet weak var myTableView: UITableView!

        @IBAction func reloadData(sender: UIButton) {
            tableData = newItems
            self.tableViewController.tableView.reloadData()
        }

        var items = ["AAA", "BBB"]
        var newItems = ["XXX", "YYY"]

        var tableData = [String]()

        var tableViewController = UITableViewController(style: .Plain)

        override func viewDidLoad() {
            super.viewDidLoad()

            tableData = items
            var tableView = tableViewController.tableView
            tableView.dataSource = self
        }

        override func didReceiveMemoryWarning() {
            super.didReceiveMemoryWarning()
        }


        func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
            return tableData.count
        }

        func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
            let cell = tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath)as UITableViewCell
            cell.textLabel?.text = self.tableData[indexPath.row]
            return cell
        }
    }

3 个答案:

答案 0 :(得分:1)

您的代码中存在许多错误,这是您完整的工作代码:

import UIKit

class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {

    @IBOutlet weak var myTableView: UITableView!

    var items = ["AAA", "BBB"]
    var newItems = ["XXX", "YYY"]

    var tableData = [String]()

    override func viewDidLoad() {
        super.viewDidLoad()
        tableData = items
        myTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

        myTableView.delegate = self
        myTableView.dataSource = self


    }

    func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{

        return tableData.count
    }

    func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
        var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell

        cell.textLabel?.text = tableData[indexPath.row]

        return cell
    }

    @IBAction func reloadData(sender: AnyObject) {

        tableData = newItems
        self.myTableView.reloadData()
    }
}

将您的代码与此代码进行比较,您将了解自己做错了什么。

HERE是更多信息的示例项目。

答案 1 :(得分:0)

导入UIKit

类ViewController:UIViewController,UITableViewDataSource,UITableViewDelegate {

@IBOutlet weak var myTableView: UITableView!
var flag=1
var items = ["AAA", "BBB"]
var newItems = ["XXX", "YYY"]

var tableData = [String]()

override func viewDidLoad() {
    super.viewDidLoad()
    if flag==1{
        tableData = items
    }
    myTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell")

    myTableView.delegate = self
    myTableView.dataSource = self
}

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{

    return tableData.count
}

func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{
    var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell

    cell.textLabel?.text = tableData[indexPath.row]

    return cell
}

@IBAction func reloadData(sender: AnyObject) {
    if flag==1{
        tableData = items
        flag=0
    }else
    {
        tableData=newItems
        flag=1
    }
    self.myTableView.reloadData()
}

}

答案 2 :(得分:0)

import UIKit
class ViewController: UIViewController,UITableViewDataSource, UITableViewDelegate {
@IBOutlet weak var myTableView: UITableView! //var flag=1 var items = ["AAA", "BBB"] var newItems = ["XXX", "YYY"] var tableData = String override func viewDidLoad() { super.viewDidLoad() // if flag==1{ // tableData = items // } myTableView.registerClass(UITableViewCell.self, forCellReuseIdentifier: "cell") myTableView.delegate = self myTableView.dataSource = self }

func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int{ return tableData.count } func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell{ var cell:UITableViewCell = tableView.dequeueReusableCellWithIdentifier("cell") as! UITableViewCell cell.textLabel?.text = tableData[indexPath.row] return cell } @IBAction func reloadData(sender: AnyObject) { // if flag==1{ // tableData = items // flag=0 // }else // { // tableData=newItems // flag=1 // } self.myTableView.reloadData() }

}