如何保留主题ID,在TableViewCell中标记为已完成

问题描述 投票:0回答:1

我想在TableView中跟踪完成的主题列表

我已经设置了代表,以确认tableView主题标记已完成]

protocol TopicDetialVCDelegate: class {
func hasBeenCompletedTopic()

}

TableViewVC

func hasBeenCompletedTopic() {
    isPerformedDelegate = true
    if !completedTopicIdArray.contains(completedTopicId) {
        completedTopicIdArray.append(completedTopicId)
    }
    print("completed Topics \(completedTopicIdArray)")
    print("TopicVC: Completed Topics total: \(completedTopicIdArray.count)")
}

这正在工作,但是我想始终将已标记为已完成标记为已完成

sample image

这里是CellForRowAt的代码

  if isPerformedDelegate {
        for _ in 0...completedTopicIdArray.count {
            if completedTopicIdArray.contains(filteredTopicArray[indexPath.row].id!) {
                cell.topicCompletedTickImageView.image = #imageLiteral(resourceName: "Tick")
            }
        }
    }

我想要什么

应该有一个数组,该数组可以获取所有已完成的主题idz,并在每次运行应用程序时检查单元格索引路径是否包含topicID show Tick image

我可以这样使用UserDefaults

UserDefaults.standard.set(array, forkey: "abc")

但问题是数组将在应用程序运行时再次初始化

就像在ViewWillDisappear中一样

 override func viewWillDisappear(_ animated: Bool) {
    UserDefaults.standard.set(completedTopicIdArray, forKey: "completedTopics")
    UserDefaults.standard.synchronize()
}

在ViewDidLoad中访问

let topics = UserDefaults.standard.array(forKey: "completedTopics")
    print(topics as? [Int] ?? [Int]())

我想在TableView中跟踪完成的Topics列表,我已经设置了代表,该委托将对TableView主题的标记确认为已完成的协议TopicDetialVCDelegate:类{func hasBeenCompletedTopic()} ...

ios swift uitableview tableview
1个回答
0
投票

我已经使用CoreData解决了这个问题,想分享

© www.soinside.com 2019 - 2024. All rights reserved.