gpt4 book ai didi

ios - 如何防止 TableView 单元格重复? swift

转载 作者:可可西里 更新时间:2023-11-01 01:37:49 24 4
gpt4 key购买 nike

所以我正在构建一个笔记应用程序并尝试了所有方法但无法解决这个问题。我有 3 个 UIViewController。当您单击第一个 UIViewController 上的按钮时,它会将您带到第三个按钮,它由一个 UITextViewUITextField 和一个 Static UILabel 会更新一些信息。当您填写这些字段并点击后退按钮时,它会将您带到第二个 View Controller ,这是一个使用此信息更新的表格。

问题是:当我点击 UITableViewCell 时,它会将信息加载回第三个 View Controller ,以便用户可以编辑他的笔记,但是当我返回 UITableView 时> 它创建了一个全新的单元格,而不是仅仅更新旧单元格。

如果我可以用我发回给用户编辑的同一个对象来更新我的数组,我认为这个问题会得到解决,但我不知道该怎么做。感谢您的帮助!

VC2 - 这就是我将数据从 tableView 发送到 textView 的方式 Back

override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

let nextView = segue.destinationViewController as! TextViewController

guard let indexPath = self.tableView.indexPathForSelectedRow else {
print("Didnt work")
return
}

let dataToSendBackToBeEdited = textViewObjectData[indexPath.row]

print(dataToSendBackToBeEdited.dreamText)
print(dataToSendBackToBeEdited.dreamTitle)
print(dataToSendBackToBeEdited.dreamType)
print(dataToSendBackToBeEdited.description)
print(dataToSendBackToBeEdited)

nextView.objectSentFromTableViewCell = dataToSendBackToBeEdited
}

这就是我保存用户点击返回到 tableView 的信息的方式

func determineSave() {

guard var savedDreamArray = NSKeyedUnarchiver.unarchiveObjectWithFile(TextViewController.pathToArchieve.ArchiveURL.path!) as? [Dream] else {

//First dream object saved
let dreamObject = Dream(dreamTitle: titleForDream.text!, dreamType: typeOfDreamLabel.text!, dreamText: textView.text, currentDate: NSDate())
dreamArray.append(dreamObject)
NSKeyedArchiver.archiveRootObject(dreamArray, toFile: pathToArchieve.ArchiveURL.path!)

return
}

//print(savedDreamArray.count)
//print(savedDreamArray.first!.dreamTitle)


let dreamObject = Dream(dreamTitle: titleForDream.text!, dreamType: typeOfDreamLabel.text!, dreamText: textView.text!, currentDate: NSDate())


savedDreamArray.append(dreamObject)
NSKeyedArchiver.archiveRootObject(savedDreamArray, toFile: pathToArchieve.ArchiveURL.path!)

}

最佳答案

我也遇到了这个问题。来到这里,得到了答案。数组!

我也在追加数组,这显然导致出现重复的单元格。

在再次检索数据并重新加载表之前,我只是将数组重置为空。

我使用的是 Firebase,所以我的代码如下所示:

DataService.instance.dateProfileRef.observeEventType(FIRDataEventType.Value) { (snapshot: FIRDataSnapshot)
in

//have to clear the array here first before reloading the data. otherwise you get duplicates
self.posts = [] //added this line
if let snapshot = snapshot.children.allObjects as? [FIRDataSnapshot] {

for snap in snapshot {
let snapUserID = (snap.childSnapshotForPath("userID").value!)

if snapUserID as? String == USER_ID {
if let profileDict = snap.value as? Dictionary<String, AnyObject> {

let key = snap.key
let post = Post(postKey: key, postData: profileDict)

self.posts.append(post)

关于ios - 如何防止 TableView 单元格重复? swift ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34114353/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com