我创建了一个显示玩家(蜜蜂)及其属性的Tableview。您也可以升级玩家,但此升级不会实时显示。我必须在TableView上一直向下滚动,然后向上滚动以查看更新的值。有人知道修复吗?
import UIKit
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var beeslevel: [Int] {
return [beelevel, wasplevel, bumblebeelevel]
}
var beelevel = 0
var wasplevel = 0
var bumblebeelevel = 0
let bees = ["bee", "wasp", "bumblebee"]
public func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
{
return(bees.count)
}
public func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
{
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath) as! ViewControllerTableViewCell
cell.beeimage.image = UIImage(named: bees[indexPath.row] + ".png")
cell.beelabel.text = bees[indexPath.row]
cell.beelevel.text = "lvl \(beeslevel[indexPath.row])"
return(cell)
}
@IBAction func beelevelup(_ sender: Any) {
beelevelup()
}
func beelevelup() {
beelevel += 1
score -= 50
}
答案 0 :(得分:0)
如果我有正确的问题,你实际上想要一个包含玩家信息的TableView行,每当它升级时都要更新。
您需要通过编写以下代码来重新加载单元格:
class ViewController: UIViewController, UITableViewDataSource, UITableViewDelegate {
var players:[String]?
var tableView: UITableView?
override func viewDidLoad() {
super.viewDidLoad()
players = ["Ronaldo", "Ronaldinho", "Messi", "Suarez", "Neymar", "Pogba", "Pele", "Rooney", "Ozil"]
tableView = UITableView()
tableView?.frame = CGRect.init(x: 10, y: 20, width: 200, height: 500)
tableView?.dataSource = self
tableView?.delegate = self
tableView?.register(UITableViewCell.self, forCellReuseIdentifier: "cell")
view.addSubview(tableView!)
let button = UIButton.init(type: UIButtonType.system)
button.setTitle("Update Data", for: UIControlState.normal)
button.frame = CGRect.init(x: 10, y: tableView!.frame.origin.y + tableView!.frame.size.height+20, width: tableView!.frame.width, height: 50)
button.addTarget(self, action: #selector(onRowUpdate), for: UIControlEvents.touchUpInside)
button.backgroundColor = UIColor.brown
view.addSubview(button)
}
func numberOfSections(in tableView: UITableView) -> Int {
return 1
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return (players?.count)!
}
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return 100
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "cell", for: indexPath)
cell.textLabel?.text = players?[indexPath.row]
return cell
}
func onRowUpdate() {
let index = NSIndexPath.init(item: 2, section: 0)
players?[index.row] = "Traxido"
tableView!.reloadRows(at: [index as IndexPath], with: UITableViewRowAnimation.automatic)
}
}