我需要将数据添加到数组。 但是,使用我的代码:它会覆盖数据而不是附加数据?
import UIKit
class Productreview: UIViewController, UITableViewDataSource, UITableViewDelegate {
var Item:String! //Data from another viewcontroller
var list:[String] = [] //The array
//Update func
func updatelist() {
var listupdate = list
listupdate.append(Item)
list = listupdate
}
override func viewDidLoad() {
super.viewDidLoad()
updatelist()
// Do any additional setup after loading the view.
}
//Sets the tableView-data
@IBOutlet weak var tableView: UITableView!
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return (list.count)
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = UITableViewCell(style: UITableViewCell.CellStyle.default, reuseIdentifier: "cell")
cell.textLabel?.text = list[indexPath.row]
return(cell)
}
}
答案 0 :(得分:0)
import UIKit
class Productreview: UIViewController, UITableViewDataSource, UITableViewDelegate {
// You have to write lowercase . Not write 'Item'
var item:String! //Data from another viewcontroller
var list:[String] = [] //The array
override func viewDidLoad() {
super.viewDidLoad()
// You have to define delegate and datasource
self.tableView.delegate = self
self.tableView.dataSource = self
updatelist()
// Do any additional setup after loading the view.
}
//Update func
func updatelist() {
var listupdate = list
listupdate.append(item)
list = listupdate
self.tableView.reloadData() // Dont forget this for showing elements.
}
//Sets the tableView-data
@IBOutlet weak var tableView: UITableView!
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return list.count
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = UITableViewCell(style: UITableViewCell.CellStyle.default, reuseIdentifier: "cell")!
cell.textLabel?.text = list[indexPath.row]
return cell
}
}
答案 1 :(得分:0)
这看起来很多余。
func updatelist() {
var listupdate = list
listupdate.append(Item)
list = listupdate
}
为什么不将其直接添加到列表中?
func updatelist() {
list.append(Item)
}
我看到您正在更新viewDidLoad
中的列表。因此,数组中将只有一个String
。因此,我怀疑您每次都创建一个ProductReview
的新实例,而不将先前的列表保存在任何地方。因此,您需要做的是每次将列表添加到列表后都保存该列表,但不要保存在ProductReview
内。
现在我考虑一下。当您仅使用变量Item
将值附加到list
中的viewDidLoad
时有什么用途?
解决方案:
因此,我的建议是您形成列表并将列表传递给ProductReview
实例。
旁注:就像@AshelyMills在评论中指出的那样,对Swift中的变量使用 lowerCamelCase 。