gpt4 book ai didi

ios - 如何选择何时返回 Collection View 单元格

转载 作者:行者123 更新时间:2023-11-30 12:34:40 26 4
gpt4 key购买 nike

我正在尝试创建一个 Collection View 列表,它使用 CoreData。它显示任务,任务是CoreData实体,它具有名称等属性。

我想要它做的是,如果属性(在本例中为“pid”)等于某个值,则像平常一样返回 Collection View 单元格,但如果不是,则不返回单元格。这就是我的 cellForItemAt 的样子:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

let task = tasks[indexPath.row]

let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "connectCell", for: indexPath) as! MyCollectionViewCell

if idVar == task.pid {

cell.labelTe?.text = task.name

} else {
print("blank cell?")
}

if cell.labelTe.text == "" {
print("cell is nil")
cell.isHidden = true
}

self.myCollView.backgroundColor = UIColor.clear
cell.layer.cornerRadius = 25

//Swipe gesture register
let cSelector = #selector(reset(sender:))
let leftSwipe = UISwipeGestureRecognizer(target: self, action: cSelector )
leftSwipe.direction = UISwipeGestureRecognizerDirection.left
cell.addGestureRecognizer(leftSwipe)

return cell
}

此解决方案的问题在于,虽然如果 idVar != task.pid 则单元格被隐藏,但它仍然会影响排序并导致奇怪的效果,例如 Collection View 单元格上方有大量空白,其中隐藏的单元格是。

这是获取数据的函数:

func getData() {

let context = (UIApplication.shared.delegate as! AppDelegate).persistentContainer.viewContext

do {
tasks = try context.fetch(Task.fetchRequest())


}

catch {
print("Get Data failed")
}

// Fetches data.

}

这是正在声明的任务数组:

var tasks : [Task] = []

这是我的 viewDidLoad 和 viewWillAppear:

override func viewDidLoad() {
super.viewDidLoad()
self.myCollView.delegate = self
self.myCollView.dataSource = self

print("In next view")
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
getData()
myCollView.reloadData()
}

我尝试对函数中的所有内容使用 if 语句,但“let task =tasks[indexPath.row]”除外,但是我收到了一个错误,因为返回需要位于 if 语句之外,这会删除它的全部目的。如果 idVar == task.pid 则如何有选择地显示单元格,但如果不是则根本不显示?

最佳答案

由于未设置谓词属性,提取请求 Task.fetchRequest() 正在提取所有任务。相反,将谓词附加到获取,这样您就只能获取所需的对象。

let fetchRequest = Task.fetchRequest();
fetchRequest.predicate = NSPredicate.init(format: "pid = %@", idVar);
tasks = try context.fetch(fetchRequest)

您可能还想使用 sortDescriptors 属性设置排序顺序。

关于ios - 如何选择何时返回 Collection View 单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43018558/

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