我只是尝试使用从数组中提取的新项重新加载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
}
}
答案 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() }
}