Ios Tableviewcell内容在滚动时四处移动
我正面临一个问题,我找不到任何解决办法 基本上我有一个UITableview,单元格的内容只是一个UITextField。我正在通过单击按钮将另一行添加到此tableview。这里我向计数器添加1,它在我的表视图中显示“numberOfRowsInSection”。计数器基本上在3开头,所以在开头有3个文本字段。现在我可以通过增加计数器动态添加另一行。按下按钮后,tableview将重新加载其数据 下面是一段代码片段Ios Tableviewcell内容在滚动时四处移动,ios,swift,uitableview,Ios,Swift,Uitableview,我正面临一个问题,我找不到任何解决办法 基本上我有一个UITableview,单元格的内容只是一个UITextField。我正在通过单击按钮将另一行添加到此tableview。这里我向计数器添加1,它在我的表视图中显示“numberOfRowsInSection”。计数器基本上在3开头,所以在开头有3个文本字段。现在我可以通过增加计数器动态添加另一行。按下按钮后,tableview将重新加载其数据 下面是一段代码片段 @IBAction func addPlayer(_ sender: UIBu
@IBAction func addPlayer(_ sender: UIButton) {
counterPlayer += 1
tableView.reloadData()
tableViewScrollToBottom(animated: true)
}
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return counterPlayer
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "PlayerTableViewCell", for: indexPath) as! PlayerTableViewCell
cell.tag = indexPath.row + 1
cell.playerTextField.placeholder = "Spieler " + String(indexPath.row + 1)
return cell
}
它工作得很好,但是如果我在第一个文本字段中写一些东西,添加更多的行,然后开始滚动,随机文本字段的内容与第一个文本字段的内容相同。此外,第一个文本字段的内容会随机移动到其他文本字段。这是一张gif,所以你可以更好地想象
我认为问题在于“dequeueReusableCell”,因此当我滚动时,第一个文本字段将消失,因此它们将被重用,并且仍然保留旧字段的内容
不幸的是,当我再次向上滚动时,我不知道保存旧值并显示它们的好方法。。。
我可以在不使用可重用单元的情况下解决这个问题,只创建新的唯一单元,但我认为这不是一个好的解决方案。。
你有什么建议,我如何解决我的问题?
我想我需要以某种方式缓存已经填充的内容,然后在向上滚动时再次显示它。。。但是怎么做呢
要了解我想在这里做什么:
基本上,用户可以输入“玩家名称”,然后点击一个按钮来执行一个序列,从而开始游戏。因此,当他点击按钮时,所有tableviewcells的文本都应该通过使用数组的顺序传递。
他没有球员人数限制
我期待着你的回答。非常感谢 您可以通过覆盖
UITableViewCell
的prepareforeuse
方法并清除旧数据来解决此问题
override func prepareForReuse() {
super.prepareForReuse()
// Clear old data to prepare the cell for being reused.
}
更新:为了解决未保存值的问题,我建议您创建一个数组来保存每个indepath.row
的未保存数据
因此,在
cellForRow
方法中,您将使用indexPath.row
中的数组数据设置文本字段的当前文本。编辑完文本字段后,将输入的数据保存在该数组中合适的索引xpath
单词“test”从何而来?你展示的代码中没有。哎呀,我没提到。我在running应用程序的文本字段中编写了测试。然后,当我滚动时,它会复制并移动,等等。。。我认为这是因为可重用单元的出列…是的,您需要明确清除cell.playerTextField
中cellForRowAt
UITableViews
单元格出现/消失时的text
属性。这意味着刚刚消失的单元格将被添加为下一个单元格。如果要基于单元格显示动态文本,需要将其保存在单元格外部,然后根据索引在cellForRow
中进行设置。首先,可能存在重复,谢谢!但当我清除数据并再次向上滚动时,我如何知道哪个文本字段中有我清除的内容?因为它需要再次设置为那个数据,当我向上滚动时..我会得到它,好主意!非常感谢,我试着意识到:)