콜렉션 뷰리스트를 생성하려고하는데 CoreData를 사용하고 있습니다. 그것은 작업을 표시하며, 작업은 CoreData 엔티티이며 이름과 같은 속성을 가지고 있습니다.콜렉션을 반환 할 시점을 선택하는 방법
속성 (이 경우 'pid')이 특정 값과 같으면, 콜렉션 뷰 셀은 정상적인 것처럼 보이지만 그렇지 않다면 셀을 반환하지 않습니다. 이것은 내 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, 여전히 순서에 영향을 미치는 등 빈의 많은 이상한 효과가 발생한다는 것입니다! 숨겨진 셀을위한 콜렉션 뷰 셀 위에있는 공간.
이
가 얻을 수있는 기능입니다 데이터 :var tasks : [Task] = []
을이 내있는 viewDidLoad 및 viewWillAppear입니다 :
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.
}
이 작업 배열이 선언되고
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()
}
I 'let task = tasks [indexPath.r]'예외를 제외하고 함수의 모든 것에 대해 if 문을 사용해 보았습니다. 아야] ',하지만 그 반환의 모든 목적을 삭제 것이 if 진술 밖이 필요합니다 오류가 발생했습니다. idVar == task.pid 인 경우 어떻게 셀을 선택적으로 표시 할 수 있습니까? 그렇다면 표시되지 않습니다.
귀하의 앱이 시도하는 것을 정말로 이해하지 못하지만 데이터 소스를 필터링하여 'cellForItamAtIndexPath :'에 도달하지 않으려합니다. 그렇게하면 표시 할 셀만 묻습니다. –
@RoboticCat 앱의 아이디어는 컬렉션보기가 포함 된 하나의보기 컨트롤러가 있고 그 중 하나를 클릭하면 다음 뷰 컨트롤러 (위에서 언급 한 것)로 이동하는 프로젝트 (작업 포함)가 있다는 것입니다. 질문) 여기에 작업이 있으며 작업을 생성 할 수 있지만이 작업은 현재있는 프로젝트 아래에 저장되며 다른 작업에서는 표시되지 않습니다. 내가 달성하고자하는 것은 idVar == pid가없는 셀을 표시하지 않는 것입니다. 그러나 가장 가까운 셀은 숨길 수 있지만 그 셀이 차지한 곳은 이제 비어 있습니다. 문의 해 주셔서 감사합니다. – Richard
그런 경우, 제안한 작업을 수행하고 데이터 소스를 필터링하여 특정 프로젝트에 대한 작업 만 포함 (또는 반환)해야합니다. '콜렉션보기 (_ : 셀 항목 :) :'이 작업을 수행하기에는 너무 늦습니다. 콜렉션보기 (_ : 항목 수 섹션 :)'(또는 배열이 올바른 항목 만 포함하도록 이전에). –